Browse Source

Removed cuda import modules to common dir

GLScene 2 năm trước cách đây
mục cha
commit
e8b050d8ad
39 tập tin đã thay đổi với 154 bổ sung8781 xóa
  1. 38 0
      Examples/AdvDemos/Quake3Demo/Model/animation.cfg
  2. 1 0
      Examples/Demos/utilities/ArchiveEdit/ArchiveEditResource.rc
  3. 1 1
      Examples/_cleanexamples.cmd
  4. 2 2
      Packages/GLScene_Cg_RT.dpk
  5. 2 2
      Packages/GLScene_Cg_RT.dproj
  6. 10 10
      Packages/GLScene_GPU_RT.dpk
  7. 10 10
      Packages/GLScene_GPU_RT.dproj
  8. 14 14
      Packagex/GLXcene.groupproj
  9. 3 3
      Packagex/GLXcene_Cg_RT.dpk
  10. 2 2
      Packagex/GLXcene_Cg_RT.dproj
  11. 10 10
      Packagex/GLXcene_GPU_RT.dpk
  12. 12 12
      Packagex/GLXcene_GPU_RT.dproj
  13. 5 5
      Packagex/GLXcene_Physics_RT.dpk
  14. 5 5
      Packagex/GLXcene_Physics_RT.dproj
  15. 4 6
      Source/Common/CUDA.DataAccess.pas
  16. 15 6
      Source/Common/CUDA.FourierTransform.pas
  17. 4 0
      Source/Common/CUDA.Import.pas
  18. 0 0
      Source/Common/CUDA.ParallelPrimitives.pas
  19. 1 3
      Source/Common/CUDA.Parser.pas
  20. 4 6
      Source/Common/CUDA.Runtime.pas
  21. 5 2
      Source/Common/CUDA.Utility.pas
  22. 0 2
      Source/Common/Cg.GL.pas
  23. 0 2
      Source/Common/Cg.Import.pas
  24. 0 0
      Source/Common/OpenCL.GL.pas
  25. 0 0
      Source/Common/OpenCL.Import.pas
  26. 1 1
      Source/Common/OpenCL.Platform.pas
  27. 0 313
      Source/FMX/CGx.GL.pas
  28. 0 907
      Source/FMX/CGx.Import.pas
  29. 0 138
      Source/FMX/CUDAx.DataAccess.pas
  30. 0 564
      Source/FMX/CUDAx.FourierTransform.pas
  31. 0 2876
      Source/FMX/CUDAx.Import.pas
  32. 0 226
      Source/FMX/CUDAx.ParallelPrimitives.pas
  33. 0 515
      Source/FMX/CUDAx.Parser.pas
  34. 0 771
      Source/FMX/CUDAx.RunTime.pas
  35. 0 292
      Source/FMX/CUDAx.Utility.pas
  36. 0 164
      Source/FMX/OpenCLx.GL.pas
  37. 0 1574
      Source/FMX/OpenCLx.Import.pas
  38. 0 332
      Source/FMX/OpenCLx.Platform.pas
  39. 5 5
      _cleanrelease.cmd

+ 38 - 0
Examples/AdvDemos/Quake3Demo/Model/animation.cfg

@@ -0,0 +1,38 @@
+// animation config file
+
+// first frame, num frames, looping frames, frames per second
+
+0	30	0	25		// BOTH_DEATH1
+29	1	0	25		// BOTH_DEAD1
+30	30	0	25		// BOTH_DEATH2
+59	1	0	25		// BOTH_DEAD2
+60	30	0	25		// BOTH_DEATH3
+89	1	0	25		// BOTH_DEAD3
+
+90	40	0	15		// TORSO_GESTURE
+
+130	6	0	15		// TORSO_ATTACK		(MUST NOT CHANGE -- hand animation is synced to this)
+136	6	0	15		// TORSO_ATTACK2	(MUST NOT CHANGE -- hand animation is synced to this)
+
+142	5	0	15		// TORSO_DROP		(MUST NOT CHANGE -- hand animation is synced to this)
+147	4	0	15		// TORSO_RAISE		(MUST NOT CHANGE -- hand animation is synced to this)
+
+151	1	0	15		// TORSO_STAND
+152	1	0	15		// TORSO_STAND2
+
+153	8	8	20		// LEGS_WALKCR
+161	12	12	20		// LEGS_WALK
+173	9	9	18		// LEGS_RUN
+182	10	10	20		// LEGS_BACK
+192	10	10	15		// LEGS_SWIM
+
+202	8	0	15		// LEGS_JUMP
+210	1	0	15		// LEGS_LAND
+
+211	8	0	15		// LEGS_JUMPB
+219	1	0	15		// LEGS_LANDB
+
+220	10	10	15		// LEGS_IDLE
+230	10	10	15		// LEGS_IDLECR
+
+240	7	7	15		// LEGS_TURN

+ 1 - 0
Examples/Demos/utilities/ArchiveEdit/ArchiveEditResource.rc

@@ -0,0 +1 @@
+Bitmap_1 BITMAP "icons.bmp"

+ 1 - 1
Examples/_cleanexamples.cmd

@@ -55,7 +55,7 @@ rem del *.cfg /s  - there are quake's animations
 attrib -R "AdvDemos/Q3Demo/Model/animation.cfg"
 
 rem  - some apps may load/save resources in RES files
-del *.res /s
+del *.res /s 
 
 echo---------------------------------------------------------
 echo delete debug and Platform directories with all subdirectories and files 

+ 2 - 2
Packages/GLScene_Cg_RT.dpk

@@ -36,8 +36,8 @@ requires
   GLScene_RT;
 
 contains
-  Cg.GL in '..\Source\Cg.GL.pas',
-  Cg.Import in '..\Source\Cg.Import.pas',
+  Cg.GL in '..\Source\Common\Cg.GL.pas',
+  Cg.Import in '..\Source\Common\Cg.Import.pas',
   Cg.Shader in '..\Source\Cg.Shader.pas',
   Cg.BombShader in '..\Source\Cg.BombShader.pas',
   Cg.PostTransformationShader in '..\Source\Cg.PostTransformationShader.pas';

+ 2 - 2
Packages/GLScene_Cg_RT.dproj

@@ -125,8 +125,8 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="vclimg.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
-        <DCCReference Include="..\Source\Cg.GL.pas"/>
-        <DCCReference Include="..\Source\Cg.Import.pas"/>
+        <DCCReference Include="..\Source\Common\Cg.GL.pas"/>
+        <DCCReference Include="..\Source\Common\Cg.Import.pas"/>
         <DCCReference Include="..\Source\Cg.Shader.pas"/>
         <DCCReference Include="..\Source\Cg.BombShader.pas"/>
         <DCCReference Include="..\Source\Cg.PostTransformationShader.pas"/>

+ 10 - 10
Packages/GLScene_GPU_RT.dpk

@@ -39,20 +39,20 @@ requires
 contains
   GLS.FilePGM in '..\Source\GLS.FilePGM.pas',
   CUDA.APIComps in '..\Source\CUDA.APIComps.pas',
-  CUDA.Import in '..\Source\CUDA.Import.pas',
-  CUDA.Utility in '..\Source\CUDA.Utility.pas',
-  CUDA.ParallelPrimitives in '..\Source\CUDA.ParallelPrimitives.pas',
-  CUDA.Runtime in '..\Source\CUDA.Runtime.pas',
-  CUDA.FourierTransform in '..\Source\CUDA.FourierTransform.pas',
+  CUDA.Import in '..\Source\Common\CUDA.Import.pas',
+  CUDA.Utility in '..\Source\Common\CUDA.Utility.pas',
+  CUDA.ParallelPrimitives in '..\Source\Common\CUDA.ParallelPrimitives.pas',
+  CUDA.Runtime in '..\Source\Common\CUDA.Runtime.pas',
+  CUDA.FourierTransform in '..\Source\Common\CUDA.FourierTransform.pas',
   CUDA.Compiler in '..\Source\CUDA.Compiler.pas',
   CUDA.Context in '..\Source\CUDA.Context.pas',
   CUDA.FFTPlan in '..\Source\CUDA.FFTPlan.pas',
   CUDA.Graphics in '..\Source\CUDA.Graphics.pas',
-  CUDA.Parser in '..\Source\CUDA.Parser.pas',
-  CUDA.DataAccess in '..\Source\CUDA.DataAccess.pas',
-  OpenCL.Import in '..\Source\OpenCL.Import.pas',
-  OpenCL.GL in '..\Source\OpenCL.GL.pas',
-  OpenCL.Platform in '..\Source\OpenCL.Platform.pas';
+  CUDA.Parser in '..\Source\Common\CUDA.Parser.pas',
+  CUDA.DataAccess in '..\Source\Common\CUDA.DataAccess.pas',
+  OpenCL.Import in '..\Source\Common\OpenCL.Import.pas',
+  OpenCL.GL in '..\Source\Common\OpenCL.GL.pas',
+  OpenCL.Platform in '..\Source\Common\OpenCL.Platform.pas';
 
 end.
 

+ 10 - 10
Packages/GLScene_GPU_RT.dproj

@@ -125,20 +125,20 @@
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="..\Source\GLS.FilePGM.pas"/>
         <DCCReference Include="..\Source\CUDA.APIComps.pas"/>
-        <DCCReference Include="..\Source\CUDA.Import.pas"/>
-        <DCCReference Include="..\Source\CUDA.Utility.pas"/>
-        <DCCReference Include="..\Source\CUDA.ParallelPrimitives.pas"/>
-        <DCCReference Include="..\Source\CUDA.Runtime.pas"/>
-        <DCCReference Include="..\Source\CUDA.FourierTransform.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Import.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Utility.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.ParallelPrimitives.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Runtime.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.FourierTransform.pas"/>
         <DCCReference Include="..\Source\CUDA.Compiler.pas"/>
         <DCCReference Include="..\Source\CUDA.Context.pas"/>
         <DCCReference Include="..\Source\CUDA.FFTPlan.pas"/>
         <DCCReference Include="..\Source\CUDA.Graphics.pas"/>
-        <DCCReference Include="..\Source\CUDA.Parser.pas"/>
-        <DCCReference Include="..\Source\CUDA.DataAccess.pas"/>
-        <DCCReference Include="..\Source\OpenCL.Import.pas"/>
-        <DCCReference Include="..\Source\OpenCL.GL.pas"/>
-        <DCCReference Include="..\Source\OpenCL.Platform.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Parser.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.DataAccess.pas"/>
+        <DCCReference Include="..\Source\Common\OpenCL.Import.pas"/>
+        <DCCReference Include="..\Source\Common\OpenCL.GL.pas"/>
+        <DCCReference Include="..\Source\Common\OpenCL.Platform.pas"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>

+ 14 - 14
Packagex/GLXcene.groupproj

@@ -18,10 +18,10 @@
         <Projects Include="GLXcene_GPU_RT.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="GLXcene_Scripts_RT.dproj">
+        <Projects Include="GLXcene_SDL_RT.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="GLXcene_SDL_RT.dproj">
+        <Projects Include="GLXcene_Scripts_RT.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="GLXcene_DT.dproj">
@@ -98,15 +98,6 @@
     <Target Name="GLXcene_GPU_RT:Make">
         <MSBuild Projects="GLXcene_GPU_RT.dproj" Targets="Make"/>
     </Target>
-    <Target Name="GLXcene_Scripts_RT">
-        <MSBuild Projects="GLXcene_Scripts_RT.dproj"/>
-    </Target>
-    <Target Name="GLXcene_Scripts_RT:Clean">
-        <MSBuild Projects="GLXcene_Scripts_RT.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="GLXcene_Scripts_RT:Make">
-        <MSBuild Projects="GLXcene_Scripts_RT.dproj" Targets="Make"/>
-    </Target>
     <Target Name="GLXcene_SDL_RT">
         <MSBuild Projects="GLXcene_SDL_RT.dproj"/>
     </Target>
@@ -116,6 +107,15 @@
     <Target Name="GLXcene_SDL_RT:Make">
         <MSBuild Projects="GLXcene_SDL_RT.dproj" Targets="Make"/>
     </Target>
+    <Target Name="GLXcene_Scripts_RT">
+        <MSBuild Projects="GLXcene_Scripts_RT.dproj"/>
+    </Target>
+    <Target Name="GLXcene_Scripts_RT:Clean">
+        <MSBuild Projects="GLXcene_Scripts_RT.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GLXcene_Scripts_RT:Make">
+        <MSBuild Projects="GLXcene_Scripts_RT.dproj" Targets="Make"/>
+    </Target>
     <Target Name="GLXcene_DT">
         <MSBuild Projects="GLXcene_DT.dproj"/>
     </Target>
@@ -180,13 +180,13 @@
         <MSBuild Projects="GLXcene_SDL_DT.dproj" Targets="Make"/>
     </Target>
     <Target Name="Build">
-        <CallTarget Targets="GLXcene_RT;GLXcene_Sounds_RT;GLXcene_Physics_RT;GLXcene_Cg_RT;GLXcene_GPU_RT;GLXcene_Scripts_RT;GLXcene_SDL_RT;GLXcene_DT;GLXcene_Cg_DT;GLXcene_Sounds_DT;GLXcene_Physics_DT;GLXcene_Scripts_DT;GLXcene_GPU_DT;GLXcene_SDL_DT"/>
+        <CallTarget Targets="GLXcene_RT;GLXcene_Sounds_RT;GLXcene_Physics_RT;GLXcene_Cg_RT;GLXcene_GPU_RT;GLXcene_SDL_RT;GLXcene_Scripts_RT;GLXcene_DT;GLXcene_Cg_DT;GLXcene_Sounds_DT;GLXcene_Physics_DT;GLXcene_Scripts_DT;GLXcene_GPU_DT;GLXcene_SDL_DT"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="GLXcene_RT:Clean;GLXcene_Sounds_RT:Clean;GLXcene_Physics_RT:Clean;GLXcene_Cg_RT:Clean;GLXcene_GPU_RT:Clean;GLXcene_Scripts_RT:Clean;GLXcene_SDL_RT:Clean;GLXcene_DT:Clean;GLXcene_Cg_DT:Clean;GLXcene_Sounds_DT:Clean;GLXcene_Physics_DT:Clean;GLXcene_Scripts_DT:Clean;GLXcene_GPU_DT:Clean;GLXcene_SDL_DT:Clean"/>
+        <CallTarget Targets="GLXcene_RT:Clean;GLXcene_Sounds_RT:Clean;GLXcene_Physics_RT:Clean;GLXcene_Cg_RT:Clean;GLXcene_GPU_RT:Clean;GLXcene_SDL_RT:Clean;GLXcene_Scripts_RT:Clean;GLXcene_DT:Clean;GLXcene_Cg_DT:Clean;GLXcene_Sounds_DT:Clean;GLXcene_Physics_DT:Clean;GLXcene_Scripts_DT:Clean;GLXcene_GPU_DT:Clean;GLXcene_SDL_DT:Clean"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="GLXcene_RT:Make;GLXcene_Sounds_RT:Make;GLXcene_Physics_RT:Make;GLXcene_Cg_RT:Make;GLXcene_GPU_RT:Make;GLXcene_Scripts_RT:Make;GLXcene_SDL_RT:Make;GLXcene_DT:Make;GLXcene_Cg_DT:Make;GLXcene_Sounds_DT:Make;GLXcene_Physics_DT:Make;GLXcene_Scripts_DT:Make;GLXcene_GPU_DT:Make;GLXcene_SDL_DT:Make"/>
+        <CallTarget Targets="GLXcene_RT:Make;GLXcene_Sounds_RT:Make;GLXcene_Physics_RT:Make;GLXcene_Cg_RT:Make;GLXcene_GPU_RT:Make;GLXcene_SDL_RT:Make;GLXcene_Scripts_RT:Make;GLXcene_DT:Make;GLXcene_Cg_DT:Make;GLXcene_Sounds_DT:Make;GLXcene_Physics_DT:Make;GLXcene_Scripts_DT:Make;GLXcene_GPU_DT:Make;GLXcene_SDL_DT:Make"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 3 - 3
Packagex/GLXcene_Cg_RT.dpk

@@ -34,10 +34,10 @@ requires
   GLXcene_RT;
 
 contains
-  CGx.Import in '..\Source\FMX\CGx.Import.pas',
-  CGx.GL in '..\Source\FMX\CGx.GL.pas',
   CGx.Shader in '..\Source\FMX\CGx.Shader.pas',
   CGx.BombShader in '..\Source\FMX\CGx.BombShader.pas',
-  CGx.PostTransformationShader in '..\Source\FMX\CGx.PostTransformationShader.pas';
+  CGx.PostTransformationShader in '..\Source\FMX\CGx.PostTransformationShader.pas',
+  Cg.Import in '..\Source\Common\Cg.Import.pas',
+  Cg.GL in '..\Source\Common\Cg.GL.pas';
 
 end.

+ 2 - 2
Packagex/GLXcene_Cg_RT.dproj

@@ -108,11 +108,11 @@
         </DelphiCompile>
         <DCCReference Include="rtl.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
-        <DCCReference Include="..\Source\FMX\CGx.Import.pas"/>
-        <DCCReference Include="..\Source\FMX\CGx.GL.pas"/>
         <DCCReference Include="..\Source\FMX\CGx.Shader.pas"/>
         <DCCReference Include="..\Source\FMX\CGx.BombShader.pas"/>
         <DCCReference Include="..\Source\FMX\CGx.PostTransformationShader.pas"/>
+        <DCCReference Include="..\Source\Common\Cg.Import.pas"/>
+        <DCCReference Include="..\Source\Common\Cg.GL.pas"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>

+ 10 - 10
Packagex/GLXcene_GPU_RT.dpk

@@ -35,20 +35,20 @@ requires
   GLXcene_RT;
 
 contains
-  CUDAx.RunTime in '..\Source\FMX\CUDAx.RunTime.pas',
-  CUDAx.Utility in '..\Source\FMX\CUDAx.Utility.pas',
   CUDAx.API in '..\Source\FMX\CUDAx.API.pas',
   CUDAx.Compiler in '..\Source\FMX\CUDAx.Compiler.pas',
   CUDAx.Context in '..\Source\FMX\CUDAx.Context.pas',
   CUDAx.FFTPlan in '..\Source\FMX\CUDAx.FFTPlan.pas',
   CUDAx.Graphics in '..\Source\FMX\CUDAx.Graphics.pas',
-  CUDAx.Parser in '..\Source\FMX\CUDAx.Parser.pas',
-  CUDAx.DataAccess in '..\Source\FMX\CUDAx.DataAccess.pas',
-  CUDAx.Import in '..\Source\FMX\CUDAx.Import.pas',
-  OpenCLx.Import in '..\Source\FMX\OpenCLx.Import.pas',
-  OpenCLx.GL in '..\Source\FMX\OpenCLx.GL.pas',
-  OpenCLx.Platform in '..\Source\FMX\OpenCLx.Platform.pas',
-  CUDAx.FourierTransform in '..\Source\FMX\CUDAx.FourierTransform.pas',
-  CUDAx.ParallelPrimitives in '..\Source\FMX\CUDAx.ParallelPrimitives.pas';
+  OpenCL.GL in '..\Source\Common\OpenCL.GL.pas',
+  OpenCL.Import in '..\Source\Common\OpenCL.Import.pas',
+  OpenCL.Platform in '..\Source\Common\OpenCL.Platform.pas',
+  CUDA.Import in '..\Source\Common\CUDA.Import.pas',
+  CUDA.DataAccess in '..\Source\Common\CUDA.DataAccess.pas',
+  CUDA.FourierTransform in '..\Source\Common\CUDA.FourierTransform.pas',
+  CUDA.ParallelPrimitives in '..\Source\Common\CUDA.ParallelPrimitives.pas',
+  CUDA.Parser in '..\Source\Common\CUDA.Parser.pas',
+  CUDA.Runtime in '..\Source\Common\CUDA.Runtime.pas',
+  CUDA.Utility in '..\Source\Common\CUDA.Utility.pas';
 
 end.

+ 12 - 12
Packagex/GLXcene_GPU_RT.dproj

@@ -149,21 +149,21 @@
         <DCCReference Include="rtl.dcp"/>
         <DCCReference Include="fmx.dcp"/>
         <DCCReference Include="GLXcene_RT.dcp"/>
-        <DCCReference Include="..\Source\FMX\CUDAx.RunTime.pas"/>
-        <DCCReference Include="..\Source\FMX\CUDAx.Utility.pas"/>
         <DCCReference Include="..\Source\FMX\CUDAx.API.pas"/>
         <DCCReference Include="..\Source\FMX\CUDAx.Compiler.pas"/>
         <DCCReference Include="..\Source\FMX\CUDAx.Context.pas"/>
         <DCCReference Include="..\Source\FMX\CUDAx.FFTPlan.pas"/>
         <DCCReference Include="..\Source\FMX\CUDAx.Graphics.pas"/>
-        <DCCReference Include="..\Source\FMX\CUDAx.Parser.pas"/>
-        <DCCReference Include="..\Source\FMX\CUDAx.DataAccess.pas"/>
-        <DCCReference Include="..\Source\FMX\CUDAx.Import.pas"/>
-        <DCCReference Include="..\Source\FMX\OpenCLx.Import.pas"/>
-        <DCCReference Include="..\Source\FMX\OpenCLx.GL.pas"/>
-        <DCCReference Include="..\Source\FMX\OpenCLx.Platform.pas"/>
-        <DCCReference Include="..\Source\FMX\CUDAx.FourierTransform.pas"/>
-        <DCCReference Include="..\Source\FMX\CUDAx.ParallelPrimitives.pas"/>
+        <DCCReference Include="..\Source\Common\OpenCL.GL.pas"/>
+        <DCCReference Include="..\Source\Common\OpenCL.Import.pas"/>
+        <DCCReference Include="..\Source\Common\OpenCL.Platform.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Import.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.DataAccess.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.FourierTransform.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.ParallelPrimitives.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Parser.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Runtime.pas"/>
+        <DCCReference Include="..\Source\Common\CUDA.Utility.pas"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>
@@ -202,12 +202,12 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                     </Platform>

+ 5 - 5
Packagex/GLXcene_Physics_RT.dpk

@@ -42,13 +42,13 @@ contains
   Physix.ODESkeletonColliders in '..\Source\FMX\Physix.ODESkeletonColliders.pas',
   Physix.ODEUtils in '..\Source\FMX\Physix.ODEUtils.pas',
   Physix.ODERagdoll in '..\Source\FMX\Physix.ODERagdoll.pas',
-  Physix.ModuleLoader in '..\Source\FMX\Physix.ModuleLoader.pas',
   Physix.NGDManager in '..\Source\FMX\Physix.NGDManager.pas',
-  Physix.NewtonImport in '..\Source\FMX\Physix.NewtonImport.pas',
-  Physix.PhysX in '..\Source\FMX\Physix.PhysX.pas',
   Physix.NGDRagdoll in '..\Source\FMX\Physix.NGDRagdoll.pas',
-  Physix.ODEImport in '..\Source\FMX\Physix.ODEImport.pas',
-  Physix.NGDImport in '..\Source\FMX\Physix.NGDImport.pas';
+  Newton.Import in '..\Source\Common\Newton.Import.pas',
+  NGD.Import in '..\Source\Common\NGD.Import.pas',
+  ODE.Import in '..\Source\Common\ODE.Import.pas',
+  ModuleLoader in '..\Source\Common\ModuleLoader.pas',
+  PhysX.Import in '..\Source\Common\PhysX.Import.pas';
 
 end.
 

+ 5 - 5
Packagex/GLXcene_Physics_RT.dproj

@@ -166,13 +166,13 @@
         <DCCReference Include="..\Source\FMX\Physix.ODESkeletonColliders.pas"/>
         <DCCReference Include="..\Source\FMX\Physix.ODEUtils.pas"/>
         <DCCReference Include="..\Source\FMX\Physix.ODERagdoll.pas"/>
-        <DCCReference Include="..\Source\FMX\Physix.ModuleLoader.pas"/>
         <DCCReference Include="..\Source\FMX\Physix.NGDManager.pas"/>
-        <DCCReference Include="..\Source\FMX\Physix.NewtonImport.pas"/>
-        <DCCReference Include="..\Source\FMX\Physix.PhysX.pas"/>
         <DCCReference Include="..\Source\FMX\Physix.NGDRagdoll.pas"/>
-        <DCCReference Include="..\Source\FMX\Physix.ODEImport.pas"/>
-        <DCCReference Include="..\Source\FMX\Physix.NGDImport.pas"/>
+        <DCCReference Include="..\Source\Common\Newton.Import.pas"/>
+        <DCCReference Include="..\Source\Common\NGD.Import.pas"/>
+        <DCCReference Include="..\Source\Common\ODE.Import.pas"/>
+        <DCCReference Include="..\Source\Common\ModuleLoader.pas"/>
+        <DCCReference Include="..\Source\Common\PhysX.Import.pas"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>

+ 4 - 6
Source/CUDA.DataAccess.pas → Source/Common/CUDA.DataAccess.pas

@@ -8,13 +8,11 @@ unit CUDA.DataAccess;
 interface
 
 uses
-  System.SysUtils,
-
-  GLS.Logger,
-  GLS.Strings,
-  GLS.Utils;
+  System.SysUtils;
 
 type
+  THalfFloat = type Word;
+
 
   GCUDAHostElementAccess<TScalar> = class
   public const
@@ -84,7 +82,7 @@ class procedure GCUDAHostElementAccess<TScalar>.CheckElementSize
 begin
   if GetElementAccessSize <> ACNum * SizeOf(TScalar) then
   begin
-    GLSLogger.LogError(strSizeMismatch);
+    /// GLSLogger.LogError(strSizeMismatch);
     Abort;
   end;
 end;

+ 15 - 6
Source/CUDA.FourierTransform.pas → Source/Common/CUDA.FourierTransform.pas

@@ -43,10 +43,11 @@ unit CUDA.FourierTransform;
 interface
 
 uses
+{$IFDEF MSWINDOWS}
   Winapi.Windows,
-
-  GLS.VectorTypes,
-  GLS.Strings,
+{$ELSE}
+  Windows,
+{$ENDIF}
 
   CUDA.Import,
   CUDA.RunTime;
@@ -73,7 +74,6 @@ type
 
   /// cufftHandle is a handle type used to store and access CUFFT plans.
   TcufftHandle = type Cardinal;
-
   TcufftReal = Single;
   PcufftReal = ^TcufftReal;
 
@@ -82,10 +82,19 @@ type
   TcufftDoubleReal = Double;
 
   PcufftDoubleComplex = ^TcufftDoubleComplex;
-  TcufftDoubleComplex = TVector2d;
+  TcufftDoubleComplex = record
+    case Integer of
+      0 : (V: array[0..1] of Double);
+      1 : (X: Double;
+           Y: Double);
+    end;
 
   PcufftComplex = ^TcufftComplex;
-  TcufftComplex = TVector2f;
+  TcufftComplex = record
+    case Integer of
+      0 : (V: array[0..1] of Single);
+      1 : (X,Y: Single);
+  end;
 
   TcufftResult = type Byte;
 

+ 4 - 0
Source/CUDA.Import.pas → Source/Common/CUDA.Import.pas

@@ -41,7 +41,11 @@ unit CUDA.Import;
 interface
 
 uses
+{$IFDEF MSWINDOWS}
   Winapi.Windows;
+{$ELSE}
+  Windows;
+{$ENDIF}
 
 const
   CUDAAPIDLL = 'nvcuda.dll';

+ 0 - 0
Source/CUDA.ParallelPrimitives.pas → Source/Common/CUDA.ParallelPrimitives.pas


+ 1 - 3
Source/CUDA.Parser.pas → Source/Common/CUDA.Parser.pas

@@ -11,6 +11,7 @@ interface
 uses
   System.Classes,
   System.SysUtils,
+
   CUDA.RunTime;
 
 type
@@ -128,9 +129,6 @@ type
 implementation
 //-------------------------------------------
 
-uses
-  GLS.Strings;
-
 const
   WordDelimiters: set of AnsiChar = [#0..#255] - ['a'..'z','A'..'Z','1'..'9','0','_'];
   sCUDAType: array[TCUDAType] of string =

+ 4 - 6
Source/CUDA.Runtime.pas → Source/Common/CUDA.Runtime.pas

@@ -42,13 +42,11 @@ unit CUDA.Runtime;
 
 interface
 
-{$I GLScene.inc}
-
 uses
+{$IFDEF MSWINDOWS}
   Winapi.Windows,
-
-  CUDA.Import,
-  GLS.Logger;
+{$ENDIF}
+  CUDA.Import;
 
 const
 {$IFDEF WIN32}
@@ -763,7 +761,7 @@ begin
   cudaWGLGetDevice := CUDARTGetProcAddress('cudaWGLGetDevice');
 
   cudaRuntimeGetVersion(V);
-  GLSLogger.LogInfoFmt('%s version %d is loaded', [LibName, V]);
+  /// GLSLogger.LogInfoFmt('%s version %d is loaded', [LibName, V]);
   Result := True;
 end;
 

+ 5 - 2
Source/CUDA.Utility.pas → Source/Common/CUDA.Utility.pas

@@ -3,12 +3,16 @@
 //
 unit CUDA.Utility;
 
-(* CUDA Utility Wraper of cutil *)
+(* CUDA Utility Wraper of cutil. Note:  *)
 
 interface
 
 uses
+{$IFDEF MSWINDOWS}
   Winapi.Windows;
+{$ELSE}
+  Windows; // or for LINUX
+{$ENDIF}
 
 const
 {$IFDEF WIN64}
@@ -65,7 +69,6 @@ const
   INVALID_MODULEHANDLE = 0;
 
 {$IFDEF MSWINDOWS}
-// ************** Windows specific ********************
 var
   CUTILHandle: HINST = INVALID_MODULEHANDLE;
 {$ELSE}

+ 0 - 2
Source/Cg.GL.pas → Source/Common/Cg.GL.pas

@@ -87,8 +87,6 @@
  *)
 unit Cg.GL;
 
-{$I GLScene.inc}
-
 interface
 
 uses

+ 0 - 2
Source/Cg.Import.pas → Source/Common/Cg.Import.pas

@@ -97,8 +97,6 @@ uses
   Winapi.Windows;
 {$ENDIF}
 
-{$I GLScene.inc}
-
 {$MINENUMSIZE 4}
 
 const

+ 0 - 0
Source/OpenCL.GL.pas → Source/Common/OpenCL.GL.pas


+ 0 - 0
Source/OpenCL.Import.pas → Source/Common/OpenCL.Import.pas


+ 1 - 1
Source/OpenCL.Platform.pas → Source/Common/OpenCL.Platform.pas

@@ -9,7 +9,7 @@ unit OpenCL.Platform;
 *)
 
 (****************************************************************************
- * Copyright (c) 2008-2020 The Khronos Group Inc.
+ * Copyright (c) 2008-2023 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

+ 0 - 313
Source/FMX/CGx.GL.pas

@@ -1,313 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-{******************************************************************************}
-{*                                                                            *}
-{*  Copyright (c) 2002, NVIDIA Corporation.                                   *}
-{*                                                                            *}
-{*  Files:    cgGL.h                                                          *}
-{*  Content:  NVIDIA Cg OpenGL interface include files                        *}
-{*                                                                            *}
-{*  NVIDIA "Cg" Release 1.2 ObjectPascal adaptation by Alexey Barkovoy        *}
-{*  E-Mail: [email protected]                                                  *}
-{*                                                                            *}
-{*  Modified: 14-Mar-2004                                                     *}
-{*                                                                            *}
-{*  Latest version can be downloaded from:                                    *}
-{*     http://clootie.narod.ru                                                *}
-{*       http://developer.nvidia.com/object/cg_download.html                  *}
-{*                                                                            *}
-{******************************************************************************}
-{                                                                              }
-{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
-{                                                                              }
-{ The contents of this file are used with permission, subject to the Mozilla   }
-{ Public License Version 1.1 (the "License"); you may not use this file except }
-{ in compliance with the License. You may obtain a copy of the License at      }
-{ http://www.mozilla.org/MPL/MPL-1.1.html                                      }
-{                                                                              }
-{ Software distributed under the License is distributed on an "AS IS" basis,   }
-{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
-{ the specific language governing rights and limitations under the License.    }
-{                                                                              }
-{ Alternatively, the contents of this file may be used under the terms of the  }
-{ GNU Lesser General Public License (the  "LGPL License"), in which case the   }
-{ provisions of the LGPL License are applicable instead of those above.        }
-{ If you wish to allow use of your version of this file only under the terms   }
-{ of the LGPL License and not to allow others to use your version of this file }
-{ under the MPL, indicate your decision by deleting  the provisions above and  }
-{ replace  them with the notice and other provisions required by the LGPL      }
-{ License.  If you do not delete the provisions above, a recipient may use     }
-{ your version of this file under either the MPL or the LGPL License.          }
-{                                                                              }
-{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
-{                                                                              }
-{******************************************************************************}
-
-(*
- *
- * Copyright (c) 2002, NVIDIA Corporation.
- *
- *
- *
- * NVIDIA Corporation("NVIDIA") supplies this software to you in consideration
- * of your agreement to the following terms, and your use, installation,
- * modification or redistribution of this NVIDIA software constitutes
- * acceptance of these terms.  If you do not agree with these terms, please do
- * not use, install, modify or redistribute this NVIDIA software.
- *
- * In consideration of your agreement to abide by the following terms, and
- * subject to these terms, NVIDIA grants you a personal, non-exclusive license,
- * under NVIDIARs copyrights in this original NVIDIA software (the "NVIDIA
- * Software"), to use, reproduce, modify and redistribute the NVIDIA
- * Software, with or without modifications, in source and/or binary forms;
- * provided that if you redistribute the NVIDIA Software, you must retain the
- * copyright notice of NVIDIA, this notice and the following text and
- * disclaimers in all such redistributions of the NVIDIA Software. Neither the
- * name, trademarks, service marks nor logos of NVIDIA Corporation may be used
- * to endorse or promote products derived from the NVIDIA Software without
- * specific prior written permission from NVIDIA.  Except as expressly stated
- * in this notice, no other rights or licenses express or implied, are granted
- * by NVIDIA herein, including but not limited to any patent rights that may be
- * infringed by your derivative works or by other works in which the NVIDIA
- * Software may be incorporated. No hardware is licensed hereunder.
- *
- * THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
- * WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION
- * EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS.
- *
- * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
- * EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST
- * PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE,
- * REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE,
- * HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING
- * NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- *)
-unit CGx.GL;
-
-{$I GLX.Scene.inc}
-
-interface
-
-uses
-  Winapi.Windows,
-  CGx.Import;
-
-const
-  {$IFDEF MSWINDOWS}
-  CgGLlibrary = 'cgGL.dll';
-  {$ELSE}
-  CgGLlibrary = 'libCgGL.so';
-  {$ENDIF}
-
-(*****************************************************************************)
-(*** cgGL Type Definitions                                                 ***)
-(*****************************************************************************)
-
-type
-  TCGGLenum = Cardinal;
-  CGGLenum = TCGGLenum;
-
-const
-  CG_GL_MATRIX_IDENTITY          = 0;
-  CG_GL_MATRIX_TRANSPOSE         = 1;
-  CG_GL_MATRIX_INVERSE           = 2;
-  CG_GL_MATRIX_INVERSE_TRANSPOSE = 3;
-
-  CG_GL_MODELVIEW_MATRIX         = 4;
-  CG_GL_PROJECTION_MATRIX        = 5;
-  CG_GL_TEXTURE_MATRIX           = 6;
-  CG_GL_MODELVIEW_PROJECTION_MATRIX = 7;
-
-  CG_GL_VERTEX                   = 8;
-  CG_GL_FRAGMENT                 = 9;
-
-(******************************************************************************
- *** Profile Functions
- *****************************************************************************)
-
-function cgGLIsProfileSupported(profile: TCGprofile): TCGbool; cdecl; external CgGLlibrary;
-
-procedure cgGLEnableProfile(profile: TCGprofile); cdecl; external CgGLlibrary;
-procedure cgGLDisableProfile(profile: TCGprofile); cdecl; external CgGLlibrary;
-
-function cgGLGetLatestProfile(profile_type: TCGGLenum): TCGprofile; cdecl; external CgGLlibrary;
-procedure cgGLSetOptimalOptions(profile: TCGprofile); cdecl; external CgGLlibrary;
-
-(******************************************************************************
- *** Program Managment Functions
- *****************************************************************************)
-
-procedure cgGLLoadProgram(_program: PCGprogram); cdecl; external CgGLlibrary;
-function cgGLIsProgramLoaded(_program: PCGprogram): TCGbool; cdecl; external CgGLlibrary;
-procedure cgGLBindProgram(_program: PCGprogram); cdecl; external CgGLlibrary;
-procedure cgGLUnbindProgram(profile: TCGprofile); cdecl; external CgGLlibrary;
-function cgGLGetProgramID(_program: PCGprogram): Cardinal; cdecl; external CgGLlibrary;
-
-(******************************************************************************
- *** Parameter Managment Functions
- *****************************************************************************)
-
-procedure cgGLSetParameter1f(param: PCGparameter; x: Single); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter2f(param: PCGparameter; x, y: Single); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter3f(param: PCGparameter; x, y, z: Single); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter4f(param: PCGparameter; x, y, z, w: Single); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter1fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter2fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter3fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter4fv(param: PCGparameter; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter1d(param: PCGparameter; x: Double); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter2d(param: PCGparameter; x, y: Double); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter3d(param: PCGparameter; x, y, z: Double); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter4d(param: PCGparameter; x, y, z, w: Double); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter1dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter2dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter3dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameter4dv(param: PCGparameter; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter1f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter2f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter3f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter4f(param: PCGparameter; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter1d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter2d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter3d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameter4d(param: PCGparameter; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray1f(param: PCGparameter;
-    offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray2f(param: PCGparameter;
-    offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray3f(param: PCGparameter;
-    offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray4f(param: PCGparameter;
-    offset, nelements: Longint; const v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray1d(param: PCGparameter;
-    offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray2d(param: PCGparameter;
-    offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray3d(param: PCGparameter;
-    offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterArray4d(param: PCGparameter;
-    offset, nelements: Longint; const v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray1f(param: PCGparameter;
-    offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray2f(param: PCGparameter;
-    offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray3f(param: PCGparameter;
-    offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray4f(param: PCGparameter;
-    offset, nelements: Longint; v: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray1d(param: PCGparameter;
-    offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray2d(param: PCGparameter;
-    offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray3d(param: PCGparameter;
-    offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetParameterArray4d(param: PCGparameter;
-    offset, nelements: Longint; v: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetParameterPointer(param: PCGparameter; fsize: Integer;
-    _type: Cardinal; stride: Integer; const _pointer: Pointer); cdecl; external CgGLlibrary;
-
-procedure cgGLEnableClientState(param: PCGparameter); cdecl; external CgGLlibrary;
-procedure cgGLDisableClientState(param: PCGparameter); cdecl; external CgGLlibrary;
-
-(******************************************************************************
- *** Matrix Parameter Managment Functions
- *****************************************************************************)
-
-procedure cgGLSetMatrixParameterdr(param: PCGparameter; const matrix: PDouble); cdecl; external CgGLlibrary;
-procedure cgGLSetMatrixParameterfr(param: PCGparameter; const matrix: PSingle); cdecl; external CgGLlibrary;
-procedure cgGLSetMatrixParameterdc(param: PCGparameter; const matrix: PDouble); cdecl; external CgGLlibrary;
-procedure cgGLSetMatrixParameterfc(param: PCGparameter; const matrix: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetMatrixParameterdr(param: PCGparameter; matrix: PDouble); cdecl; external CgGLlibrary;
-procedure cgGLGetMatrixParameterfr(param: PCGparameter; matrix: PSingle); cdecl; external CgGLlibrary;
-procedure cgGLGetMatrixParameterdc(param: PCGparameter; matrix: PDouble); cdecl; external CgGLlibrary;
-procedure cgGLGetMatrixParameterfc(param: PCGparameter; matrix: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetStateMatrixParameter(param: PCGparameter;
-    matrix: TCGGLenum; transform: TCGGLenum); cdecl; external CgGLlibrary;
-
-procedure cgGLSetMatrixParameterArrayfc(param: PCGparameter;
-    offset, nelements: Longint; const matrices: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetMatrixParameterArrayfr(param: PCGparameter;
-    offset, nelements: Longint; const matrices: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLSetMatrixParameterArraydc(param: PCGparameter;
-    offset, nelements: Longint; const matrices: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLSetMatrixParameterArraydr(param: PCGparameter;
-    offset, nelements: Longint; const matrices: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetMatrixParameterArrayfc(param: PCGparameter;
-    offset, nelements: Longint; matrices: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetMatrixParameterArrayfr(param: PCGparameter;
-    offset, nelements: Longint; matrices: PSingle); cdecl; external CgGLlibrary;
-
-procedure cgGLGetMatrixParameterArraydc(param: PCGparameter;
-    offset, nelements: Longint; matrices: PDouble); cdecl; external CgGLlibrary;
-
-procedure cgGLGetMatrixParameterArraydr(param: PCGparameter;
-    offset, nelements: Longint; matrices: PDouble); cdecl; external CgGLlibrary;
-
-(******************************************************************************
- *** Texture Parameter Managment Functions
- *****************************************************************************)
-
-procedure cgGLSetTextureParameter(param: PCGparameter; texobj: Cardinal); cdecl; external CgGLlibrary;
-function cgGLGetTextureParameter(param: PCGparameter): Cardinal; cdecl; external CgGLlibrary;
-procedure cgGLEnableTextureParameter(param: PCGparameter); cdecl; external CgGLlibrary;
-procedure cgGLDisableTextureParameter(param: PCGparameter); cdecl; external CgGLlibrary;
-function cgGLGetTextureEnum(param: PCGparameter): Cardinal; cdecl; external CgGLlibrary;
-procedure cgGLSetManageTextureParameters(ctx: PCGcontext; flag: TCGbool); cdecl; external CgGLlibrary;
-function cgGLGetManageTextureParameters(ctx: PCGcontext): TCGbool; cdecl; external CgGLlibrary;
-
-implementation
-
-end.

+ 0 - 907
Source/FMX/CGx.Import.pas

@@ -1,907 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-{******************************************************************************}
-{*                                                                            *}
-{*  Copyright (c) 2002, NVIDIA Corporation.                                   *}
-{*                                                                            *}
-{*  Files:    cg.h, cg_datatypes.h, cg_errors.h, cg_profiles.h,               *}
-{*            cgGL_profiles.h, cg_bindlocations.h                             *}
-{*  Content:  NVIDIA Cg core include files                                    *}
-{*                                                                            *}
-{*  NVIDIA "Cg" Release 1.2 ObjectPascal adaptation by Alexey Barkovoy        *}
-{*  E-Mail: [email protected]                                                  *}
-{*                                                                            *}
-{*  Modified: 14-Mar-2004                                                     *}
-{*                                                                            *}
-{*  Latest version can be downloaded from:                                    *}
-{*     http://www.clootie.ru/                                                 *}
-{*       http://developer.nvidia.com/object/cg_download.html                  *}
-{*                                                                            *}
-{******************************************************************************}
-{                                                                              }
-{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
-{                                                                              }
-{ The contents of this file are used with permission, subject to the Mozilla   }
-{ Public License Version 1.1 (the "License"); you may not use this file except }
-{ in compliance with the License. You may obtain a copy of the License at      }
-{ http://www.mozilla.org/MPL/MPL-1.1.html                                      }
-{                                                                              }
-{ Software distributed under the License is distributed on an "AS IS" basis,   }
-{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
-{ the specific language governing rights and limitations under the License.    }
-{                                                                              }
-{ Alternatively, the contents of this file may be used under the terms of the  }
-{ GNU Lesser General Public License (the  "LGPL License"), in which case the   }
-{ provisions of the LGPL License are applicable instead of those above.        }
-{ If you wish to allow use of your version of this file only under the terms   }
-{ of the LGPL License and not to allow others to use your version of this file }
-{ under the MPL, indicate your decision by deleting  the provisions above and  }
-{ replace  them with the notice and other provisions required by the LGPL      }
-{ License.  If you do not delete the provisions above, a recipient may use     }
-{ your version of this file under either the MPL or the LGPL License.          }
-{                                                                              }
-{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
-{                                                                              }
-{******************************************************************************}
-
-(*
- * Copyright (c) 2002, NVIDIA Corporation.
- *
- * NVIDIA Corporation("NVIDIA") supplies this software to you in consideration
- * of your agreement to the following terms, and your use, installation,
- * modification or redistribution of this NVIDIA software constitutes
- * acceptance of these terms.  If you do not agree with these terms, please do
- * not use, install, modify or redistribute this NVIDIA software.
- *
- * In consideration of your agreement to abide by the following terms, and
- * subject to these terms, NVIDIA grants you a personal, non-exclusive license,
- * under NVIDIAs copyrights in this original NVIDIA software (the "NVIDIA
- * Software"), to use, reproduce, modify and redistribute the NVIDIA
- * Software, with or without modifications, in source and/or binary forms;
- * provided that if you redistribute the NVIDIA Software, you must retain the
- * copyright notice of NVIDIA, this notice and the following text and
- * disclaimers in all such redistributions of the NVIDIA Software. Neither the
- * name, trademarks, service marks nor logos of NVIDIA Corporation may be used
- * to endorse or promote products derived from the NVIDIA Software without
- * specific prior written permission from NVIDIA.  Except as expressly stated
- * in this notice, no other rights or licenses express or implied, are granted
- * by NVIDIA herein, including but not limited to any patent rights that may be
- * infringed by your derivative works or by other works in which the NVIDIA
- * Software may be incorporated. No hardware is licensed hereunder.
- *
- * THE NVIDIA SOFTWARE IS BEING PROVIDED ON AN "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
- * WITHOUT LIMITATION, WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR ITS USE AND OPERATION
- * EITHER ALONE OR IN COMBINATION WITH OTHER PRODUCTS.
- *
- * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
- * EXEMPLARY, CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOST
- * PROFITS; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) OR ARISING IN ANY WAY OUT OF THE USE,
- * REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE NVIDIA SOFTWARE,
- * HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING
- * NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF NVIDIA HAS BEEN ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- *)
-unit CGx.Import;
-
-interface
-
-uses
-  Winapi.Windows;
-
-{$I GLX.Scene.inc}
-
-{$MINENUMSIZE 4}
-
-const
-  {$IFDEF MSWINDOWS}
-  CgLibrary = 'cg.dll';
-  {$ELSE}
-  CgLibrary = 'libCg.so';
-  {$ENDIF}
-
-const
-  CG_VERSION_1_2                = 1;
-  CG_VERSION_NUM                = 1200;
-
-//
-// This #define foreces the old API for now.  This will be removed soon, but
-// the user will still have the ability to enable it.
-//
-{.$DEFINE CG_DEPRECATED_1_1_API}
-
-//******************************)
-(*** CG Run-Time Library API                                          ***)
-//******************************)
-
-//******************************)
-(*** Data types and enumerants                                         ***)
-//******************************)
-
-type
-  PCharCG = PAnsiChar;
-  PPCharCG = ^PCharCG;
-
-  StringCG = AnsiString;
-
-  TCGbool = Integer;
-  CGbool = TCGbool;
-
-const
-  CG_FALSE = TCGbool(0);
-  CG_TRUE  = TCGbool(1);
-
-type
-  _CGcontext = record end;
-  PCGcontext = ^_CGcontext;
-  CGcontext = PCGcontext;
-
-  _CGprogram = record end;
-  PCGprogram = ^_CGprogram;
-  CGprogram = PCGprogram;
-        
-  _CGparameter = record end;
-  PCGparameter = ^_CGparameter;
-  CGparameter = PCGparameter;
-        
-
- (*
-  * The following macro invocations define the supported CG basic data types.
-  *
-  * The macros have the form :
-  *
-  *   CG_DATATYPE_MACRO(name, compiler_name, nrows, ncols)
-  *
-  *     name          : The name of the data type.
-  *     compiler_name : The name of the data type within the compiler syntax.
-  *     enum_name     : The C enumerant.
-  *     nrows         : Number of rows for matrix types.  Should be 0 other-wise.
-  *     ncols         : Number of columns for matrix types.  Should be 0
-  *                     other-wise.
-  *
-  *)
-
-  TCGtype = (
-    CG_UNKNOWN_TYPE,
-    CG_STRUCT,
-    CG_ARRAY,
-
-    CG_TYPE_START_ENUM = 1024,
-
-    //# define CG_DATATYPE_MACRO(name, compiler_name, enum_name, ncols, nrows) \
-    //  enum_name ,
-
-    CG_HALF,      // CG_DATATYPE_MACRO(Half,half,CG_HALF,0,0)
-    CG_HALF2,     // CG_DATATYPE_MACRO(Half2,half2,CG_HALF2,0,0)
-    CG_HALF3,     // CG_DATATYPE_MACRO(Half3,half3,CG_HALF3,0,0)
-    CG_HALF4,     // CG_DATATYPE_MACRO(Half4,half4,CG_HALF4,0,0)
-    CG_HALF1x1,   // CG_DATATYPE_MACRO(Half1x1,half1x1,CG_HALF1x1,1,1)
-    CG_HALF1x2,   // CG_DATATYPE_MACRO(Half1x2,half1x2,CG_HALF1x2,1,2)
-    CG_HALF1x3,   // CG_DATATYPE_MACRO(Half1x3,half1x3,CG_HALF1x3,1,3)
-    CG_HALF1x4,   // CG_DATATYPE_MACRO(Half1x4,half1x4,CG_HALF1x4,1,4)
-    CG_HALF2x1,   // CG_DATATYPE_MACRO(Half2x1,half2x1,CG_HALF2x1,2,1)
-    CG_HALF2x2,   // CG_DATATYPE_MACRO(Half2x2,half2x2,CG_HALF2x2,2,2)
-    CG_HALF2x3,   // CG_DATATYPE_MACRO(Half2x3,half2x3,CG_HALF2x3,2,3)
-    CG_HALF2x4,   // CG_DATATYPE_MACRO(Half2x4,half2x4,CG_HALF2x4,2,4)
-    CG_HALF3x1,   // CG_DATATYPE_MACRO(Half3x1,half3x1,CG_HALF3x1,3,1)
-    CG_HALF3x2,   // CG_DATATYPE_MACRO(Half3x2,half3x2,CG_HALF3x2,3,2)
-    CG_HALF3x3,   // CG_DATATYPE_MACRO(Half3x3,half3x3,CG_HALF3x3,3,3)
-    CG_HALF3x4,   // CG_DATATYPE_MACRO(Half3x4,half3x4,CG_HALF3x4,3,4)
-    CG_HALF4x1,   // CG_DATATYPE_MACRO(Half4x1,half4x1,CG_HALF4x1,4,1)
-    CG_HALF4x2,   // CG_DATATYPE_MACRO(Half4x2,half4x2,CG_HALF4x2,4,2)
-    CG_HALF4x3,   // CG_DATATYPE_MACRO(Half4x3,half4x3,CG_HALF4x3,4,3)
-    CG_HALF4x4,   // CG_DATATYPE_MACRO(Half4x4,half4x4,CG_HALF4x4,4,4)
-    CG_FLOAT,     // CG_DATATYPE_MACRO(Float,float,CG_FLOAT,0,0)
-    CG_FLOAT2,    // CG_DATATYPE_MACRO(Float2,float2,CG_FLOAT2,0,0)
-    CG_FLOAT3,    // CG_DATATYPE_MACRO(Float3,float3,CG_FLOAT3,0,0)
-    CG_FLOAT4,    // CG_DATATYPE_MACRO(Float4,float4,CG_FLOAT4,0,0)
-    CG_FLOAT1x1,  // CG_DATATYPE_MACRO(Float1x1,float1x1,CG_FLOAT1x1,1,1)
-    CG_FLOAT1x2,  // CG_DATATYPE_MACRO(Float1x2,float1x2,CG_FLOAT1x2,1,2)
-    CG_FLOAT1x3,  // CG_DATATYPE_MACRO(Float1x3,float1x3,CG_FLOAT1x3,1,3)
-    CG_FLOAT1x4,  // CG_DATATYPE_MACRO(Float1x4,float1x4,CG_FLOAT1x4,1,4)
-    CG_FLOAT2x1,  // CG_DATATYPE_MACRO(Float2x1,float2x1,CG_FLOAT2x1,2,1)
-    CG_FLOAT2x2,  // CG_DATATYPE_MACRO(Float2x2,float2x2,CG_FLOAT2x2,2,2)
-    CG_FLOAT2x3,  // CG_DATATYPE_MACRO(Float2x3,float2x3,CG_FLOAT2x3,2,3)
-    CG_FLOAT2x4,  // CG_DATATYPE_MACRO(Float2x4,float2x4,CG_FLOAT2x4,2,4)
-    CG_FLOAT3x1,  // CG_DATATYPE_MACRO(Float3x1,float3x1,CG_FLOAT3x1,3,1)
-    CG_FLOAT3x2,  // CG_DATATYPE_MACRO(Float3x2,float3x2,CG_FLOAT3x2,3,2)
-    CG_FLOAT3x3,  // CG_DATATYPE_MACRO(Float3x3,float3x3,CG_FLOAT3x3,3,3)
-    CG_FLOAT3x4,  // CG_DATATYPE_MACRO(Float3x4,float3x4,CG_FLOAT3x4,3,4)
-    CG_FLOAT4x1,  // CG_DATATYPE_MACRO(Float4x1,float4x1,CG_FLOAT4x1,4,1)
-    CG_FLOAT4x2,  // CG_DATATYPE_MACRO(Float4x2,float4x2,CG_FLOAT4x2,4,2)
-    CG_FLOAT4x3,  // CG_DATATYPE_MACRO(Float4x3,float4x3,CG_FLOAT4x3,4,3)
-    CG_FLOAT4x4,  // CG_DATATYPE_MACRO(Float4x4,float4x4,CG_FLOAT4x4,4,4)
-    CG_SAMPLER1D, // CG_DATATYPE_MACRO(Sampler1D,sampler1D,CG_SAMPLER1D,0,0)
-    CG_SAMPLER2D, // CG_DATATYPE_MACRO(Sampler2D,sampler2D,CG_SAMPLER2D,0,0)
-    CG_SAMPLER3D, // CG_DATATYPE_MACRO(Sampler3D,sampler3D,CG_SAMPLER3D,0,0)
-    CG_SAMPLERRECT, // CG_DATATYPE_MACRO(SamplerRECT,samplerRECT,CG_SAMPLERRECT,0,0)
-    CG_SAMPLERCUBE, // CG_DATATYPE_MACRO(SamplerCUBE,samplerCUBE,CG_SAMPLERCUBE,0,0)
-    CG_FIXED,     // CG_DATATYPE_MACRO(Fixed,fixed,CG_FIXED,0,0)
-    CG_FIXED2,    // CG_DATATYPE_MACRO(Fixed2,fixed2,CG_FIXED2,0,0)
-    CG_FIXED3,    // CG_DATATYPE_MACRO(Fixed3,fixed3,CG_FIXED3,0,0)
-    CG_FIXED4,    // CG_DATATYPE_MACRO(Fixed4,fixed4,CG_FIXED4,0,0)
-    CG_FIXED1x1,  // CG_DATATYPE_MACRO(Fixed1x1,fixed1x1,CG_FIXED1x1,1,1)
-    CG_FIXED1x2,  // CG_DATATYPE_MACRO(Fixed1x2,fixed1x2,CG_FIXED1x2,1,2)
-    CG_FIXED1x3,  // CG_DATATYPE_MACRO(Fixed1x3,fixed1x3,CG_FIXED1x3,1,3)
-    CG_FIXED1x4,  // CG_DATATYPE_MACRO(Fixed1x4,fixed1x4,CG_FIXED1x4,1,4)
-    CG_FIXED2x1,  // CG_DATATYPE_MACRO(Fixed2x1,fixed2x1,CG_FIXED2x1,2,1)
-    CG_FIXED2x2,  // CG_DATATYPE_MACRO(Fixed2x2,fixed2x2,CG_FIXED2x2,2,2)
-    CG_FIXED2x3,  // CG_DATATYPE_MACRO(Fixed2x3,fixed2x3,CG_FIXED2x3,2,3)
-    CG_FIXED2x4,  // CG_DATATYPE_MACRO(Fixed2x4,fixed2x4,CG_FIXED2x4,2,4)
-    CG_FIXED3x1,  // CG_DATATYPE_MACRO(Fixed3x1,fixed3x1,CG_FIXED3x1,3,1)
-    CG_FIXED3x2,  // CG_DATATYPE_MACRO(Fixed3x2,fixed3x2,CG_FIXED3x2,3,2)
-    CG_FIXED3x3,  // CG_DATATYPE_MACRO(Fixed3x3,fixed3x3,CG_FIXED3x3,3,3)
-    CG_FIXED3x4,  // CG_DATATYPE_MACRO(Fixed3x4,fixed3x4,CG_FIXED3x4,3,4)
-    CG_FIXED4x1,  // CG_DATATYPE_MACRO(Fixed4x1,fixed4x1,CG_FIXED4x1,4,1)
-    CG_FIXED4x2,  // CG_DATATYPE_MACRO(Fixed4x2,fixed4x2,CG_FIXED4x2,4,2)
-    CG_FIXED4x3,  // CG_DATATYPE_MACRO(Fixed4x3,fixed4x3,CG_FIXED4x3,4,3)
-    CG_FIXED4x4,  // CG_DATATYPE_MACRO(Fixed4x4,fixed4x4,CG_FIXED4x4,4,4)
-    CG_HALF1,     // CG_DATATYPE_MACRO(Half1,half1,CG_HALF1,0,0)
-    CG_FLOAT1,    // CG_DATATYPE_MACRO(Float1,float1,CG_FLOAT1,0,0)
-    CG_FIXED1,    // CG_DATATYPE_MACRO(Fixed1,fixed1,CG_FIXED1,0,0)
-    CG_INT,       // CG_DATATYPE_MACRO(Int,int,CG_INT,0,1)
-    CG_INT1,      // CG_DATATYPE_MACRO(Int1,int1,CG_INT1,0,1)
-    CG_INT2,      // CG_DATATYPE_MACRO(Int2,int2,CG_INT2,0,2)
-    CG_INT3,      // CG_DATATYPE_MACRO(Int3,int3,CG_INT3,0,3)
-    CG_INT4,      // CG_DATATYPE_MACRO(Int4,int4,CG_INT4,0,4)
-    CG_INT1x1,    // CG_DATATYPE_MACRO(Int1x1,int1x1,CG_INT1x1,1,1)
-    CG_INT1x2,    // CG_DATATYPE_MACRO(Int1x2,int1x2,CG_INT1x2,1,2)
-    CG_INT1x3,    // CCG_DATATYPE_MACRO(Int1x3,int1x3,CG_INT1x3,1,3)
-    CG_INT1x4,    // CCG_DATATYPE_MACRO(Int1x4,int1x4,CG_INT1x4,1,4)
-    CG_INT2x1,    // CCG_DATATYPE_MACRO(Int2x1,int2x1,CG_INT2x1,2,1)
-    CG_INT2x2,    // CCG_DATATYPE_MACRO(Int2x2,int2x2,CG_INT2x2,2,2)
-    CG_INT2x3,    // CCG_DATATYPE_MACRO(Int2x3,int2x3,CG_INT2x3,2,3)
-    CG_INT2x4,    // CCG_DATATYPE_MACRO(Int2x4,int2x4,CG_INT2x4,2,4)
-    CG_INT3x1,    // CCG_DATATYPE_MACRO(Int3x1,int3x1,CG_INT3x1,3,1)
-    CG_INT3x2,    // CCG_DATATYPE_MACRO(Int3x2,int3x2,CG_INT3x2,3,2)
-    CG_INT3x3,    // CCG_DATATYPE_MACRO(Int3x3,int3x3,CG_INT3x3,3,3)
-    CG_INT3x4,    // CCG_DATATYPE_MACRO(Int3x4,int3x4,CG_INT3x4,3,4)
-    CG_INT4x1,    // CCG_DATATYPE_MACRO(Int4x1,int4x1,CG_INT4x1,4,1)
-    CG_INT4x2,    // CCG_DATATYPE_MACRO(Int4x2,int4x2,CG_INT4x2,4,2)
-    CG_INT4x3,    // CCG_DATATYPE_MACRO(Int4x3,int4x3,CG_INT4x3,4,3)
-    CG_INT4x4,    // CCG_DATATYPE_MACRO(Int4x4,int4x4,CG_INT4x4,4,4)
-    CG_BOOL,      // CG_DATATYPE_MACRO(Bool,bool,CG_BOOL,0,1)
-    CG_BOOL1,     // CG_DATATYPE_MACRO(Bool1,bool1,CG_BOOL1,0,1)
-    CG_BOOL2,     // CG_DATATYPE_MACRO(Bool2,bool2,CG_BOOL2,0,2)
-    CG_BOOL3,     // CG_DATATYPE_MACRO(Bool3,bool3,CG_BOOL3,0,3)
-    CG_BOOL4,     // CG_DATATYPE_MACRO(Bool4,bool4,CG_BOOL4,0,4)
-    CG_BOOL1x1,   // CG_DATATYPE_MACRO(Bool1x1,bool1x1,CG_BOOL1x1,1,1)
-    CG_BOOL1x2,   // CG_DATATYPE_MACRO(Bool1x2,bool1x2,CG_BOOL1x2,1,2)
-    CG_BOOL1x3,   // CG_DATATYPE_MACRO(Bool1x3,bool1x3,CG_BOOL1x3,1,3)
-    CG_BOOL1x4,   // CG_DATATYPE_MACRO(Bool1x4,bool1x4,CG_BOOL1x4,1,4)
-    CG_BOOL2x1,   // CG_DATATYPE_MACRO(Bool2x1,bool2x1,CG_BOOL2x1,2,1)
-    CG_BOOL2x2,   // CG_DATATYPE_MACRO(Bool2x2,bool2x2,CG_BOOL2x2,2,2)
-    CG_BOOL2x3,   // CG_DATATYPE_MACRO(Bool2x3,bool2x3,CG_BOOL2x3,2,3)
-    CG_BOOL2x4,   // CG_DATATYPE_MACRO(Bool2x4,bool2x4,CG_BOOL2x4,2,4)
-    CG_BOOL3x1,   // CG_DATATYPE_MACRO(Bool3x1,bool3x1,CG_BOOL3x1,3,1)
-    CG_BOOL3x2,   // CG_DATATYPE_MACRO(Bool3x2,bool3x2,CG_BOOL3x2,3,2)
-    CG_BOOL3x3,   // CG_DATATYPE_MACRO(Bool3x3,bool3x3,CG_BOOL3x3,3,3)
-    CG_BOOL3x4,   // CG_DATATYPE_MACRO(Bool3x4,bool3x4,CG_BOOL3x4,3,4)
-    CG_BOOL4x1,   // CG_DATATYPE_MACRO(Bool4x1,bool4x1,CG_BOOL4x1,4,1)
-    CG_BOOL4x2,   // CG_DATATYPE_MACRO(Bool4x2,bool4x2,CG_BOOL4x2,4,2)
-    CG_BOOL4x3,   // CG_DATATYPE_MACRO(Bool4x3,bool4x3,CG_BOOL4x3,4,3)
-    CG_BOOL4x4    // CG_DATATYPE_MACRO(Bool4x4,bool4x4,CG_BOOL4x4,4,4)
-  );
-  CGtype = TCGtype;
-
-
- (*
-  * The following macro invocations define the supported CG basic hardware
-  * bind locations.
-  *
-  * The macros have the form :
-  *
-  *   CG_BINDLOCATION_MACRO(name, compiler_name, enum_int)
-  *
-  *     name          : The name of the location.
-  *     enum_name     : The C enumerant.
-  *     compiler_name : The name of the location within the compiler syntax.
-  *     int_id        : Integer enumerant associated with this bind location.
-  *     addressable   : The bind location must have an integer address
-  *                     associated with it.
-  *     ParamType     : the cgParamType of this register.
-  *
-  *)
-  TCGresource = (
-    //# define CG_BINDLOCATION_MACRO(name,enum_name,compiler_name,\
-    //                               enum_int,addressable,param_type) \
-    //  enum_name = enum_int,
-
-    CG_TEXUNIT0              =  2048, // CG_BINDLOCATION_MACRO(TexUnit0,CG_TEXUNIT0,"texunit 0",2048,0,cgTexObjParam)
-    CG_TEXUNIT1              =  2049, // CG_BINDLOCATION_MACRO(TexUnit1,CG_TEXUNIT1,"texunit 1",2049,0,cgTexObjParam)
-    CG_TEXUNIT2              =  2050, // CG_BINDLOCATION_MACRO(TexUnit2,CG_TEXUNIT2,"texunit 2",2050,0,cgTexObjParam)
-    CG_TEXUNIT3              =  2051, // CG_BINDLOCATION_MACRO(TexUnit3,CG_TEXUNIT3,"texunit 3",2051,0,cgTexObjParam)
-    CG_TEXUNIT4              =  2052, // CG_BINDLOCATION_MACRO(TexUnit4,CG_TEXUNIT4,"texunit 4",2052,0,cgTexObjParam)
-    CG_TEXUNIT5              =  2053, // CG_BINDLOCATION_MACRO(TexUnit5,CG_TEXUNIT5,"texunit 5",2053,0,cgTexObjParam)
-    CG_TEXUNIT6              =  2054, // CG_BINDLOCATION_MACRO(TexUnit6,CG_TEXUNIT6,"texunit 6",2054,0,cgTexObjParam)
-    CG_TEXUNIT7              =  2055, // CG_BINDLOCATION_MACRO(TexUnit7,CG_TEXUNIT7,"texunit 7",2055,0,cgTexObjParam)
-    CG_TEXUNIT8              =  2056, // CG_BINDLOCATION_MACRO(TexUnit8,CG_TEXUNIT8,"texunit 8",2056,0,cgTexObjParam)
-    CG_TEXUNIT9              =  2057, // CG_BINDLOCATION_MACRO(TexUnit9,CG_TEXUNIT9,"texunit 9",2057,0,cgTexObjParam)
-    CG_TEXUNIT10             =  2058, // CG_BINDLOCATION_MACRO(TexUnit10,CG_TEXUNIT10,"texunit 10",2058,0,cgTexObjParam)
-    CG_TEXUNIT11             =  2059, // CG_BINDLOCATION_MACRO(TexUnit11,CG_TEXUNIT11,"texunit 11",2059,0,cgTexObjParam)
-    CG_TEXUNIT12             =  2060, // CG_BINDLOCATION_MACRO(TexUnit12,CG_TEXUNIT12,"texunit 12",2060,0,cgTexObjParam)
-    CG_TEXUNIT13             =  2061, // CG_BINDLOCATION_MACRO(TexUnit13,CG_TEXUNIT13,"texunit 13",2061,0,cgTexObjParam)
-    CG_TEXUNIT14             =  2062, // CG_BINDLOCATION_MACRO(TexUnit14,CG_TEXUNIT14,"texunit 14",2062,0,cgTexObjParam)
-    CG_TEXUNIT15             =  2063, // CG_BINDLOCATION_MACRO(TexUnit15,CG_TEXUNIT15,"texunit 15",2063,0,cgTexObjParam)
-
-    CG_ATTR0                 =  2113, // CG_BINDLOCATION_MACRO(Attr0,CG_ATTR0,"ATTR0",2113,0,cgConnectorMemberParam)
-    CG_ATTR1                 =  2114, // CG_BINDLOCATION_MACRO(Attr1,CG_ATTR1,"ATTR1",2114,0,cgConnectorMemberParam)
-    CG_ATTR2                 =  2115, // CG_BINDLOCATION_MACRO(Attr2,CG_ATTR2,"ATTR2",2115,0,cgConnectorMemberParam)
-    CG_ATTR3                 =  2116, // CG_BINDLOCATION_MACRO(Attr3,CG_ATTR3,"ATTR3",2116,0,cgConnectorMemberParam)
-    CG_ATTR4                 =  2117, // CG_BINDLOCATION_MACRO(Attr4,CG_ATTR4,"ATTR4",2117,0,cgConnectorMemberParam)
-    CG_ATTR5                 =  2118, // CG_BINDLOCATION_MACRO(Attr5,CG_ATTR5,"ATTR5",2118,0,cgConnectorMemberParam)
-    CG_ATTR6                 =  2119, // CG_BINDLOCATION_MACRO(Attr6,CG_ATTR6,"ATTR6",2119,0,cgConnectorMemberParam)
-    CG_ATTR7                 =  2120, // CG_BINDLOCATION_MACRO(Attr7,CG_ATTR7,"ATTR7",2120,0,cgConnectorMemberParam)
-    CG_ATTR8                 =  2121, // CG_BINDLOCATION_MACRO(Attr8,CG_ATTR8,"ATTR8",2121,0,cgConnectorMemberParam)
-    CG_ATTR9                 =  2122, // CG_BINDLOCATION_MACRO(Attr9,CG_ATTR9,"ATTR9",2122,0,cgConnectorMemberParam)
-    CG_ATTR10                =  2123, // CG_BINDLOCATION_MACRO(Attr10,CG_ATTR10,"ATTR10",2123,0,cgConnectorMemberParam)
-    CG_ATTR11                =  2124, // CG_BINDLOCATION_MACRO(Attr11,CG_ATTR11,"ATTR11",2124,0,cgConnectorMemberParam)
-    CG_ATTR12                =  2125, // CG_BINDLOCATION_MACRO(Attr12,CG_ATTR12,"ATTR12",2125,0,cgConnectorMemberParam)
-    CG_ATTR13                =  2126, // CG_BINDLOCATION_MACRO(Attr13,CG_ATTR13,"ATTR13",2126,0,cgConnectorMemberParam)
-    CG_ATTR14                =  2127, // CG_BINDLOCATION_MACRO(Attr14,CG_ATTR14,"ATTR14",2127,0,cgConnectorMemberParam)
-    CG_ATTR15                =  2128, // CG_BINDLOCATION_MACRO(Attr15,CG_ATTR15,"ATTR15",2128,0,cgConnectorMemberParam)
-
-    CG_C                     =  2178, // CG_BINDLOCATION_MACRO(VertUniform,CG_C,"c",2178,1,cgUniformParam)
-
-    CG_TEX0                  =  2179, // CG_BINDLOCATION_MACRO(Tex0,CG_TEX0,"TEX0",2179,0,cgConnectorMemberParam)
-    CG_TEX1                  =  2180, // CG_BINDLOCATION_MACRO(Tex1,CG_TEX1,"TEX1",2180,0,cgConnectorMemberParam)
-    CG_TEX2                  =  2181, // CG_BINDLOCATION_MACRO(Tex2,CG_TEX2,"TEX2",2181,0,cgConnectorMemberParam)
-    CG_TEX3                  =  2192, // CG_BINDLOCATION_MACRO(Tex3,CG_TEX3,"TEX3",2192,0,cgConnectorMemberParam)
-    CG_TEX4                  =  2193, // CG_BINDLOCATION_MACRO(Tex4,CG_TEX4,"TEX4",2193,0,cgConnectorMemberParam)
-    CG_TEX5                  =  2194, // CG_BINDLOCATION_MACRO(Tex5,CG_TEX5,"TEX5",2194,0,cgConnectorMemberParam)
-    CG_TEX6                  =  2195, // CG_BINDLOCATION_MACRO(Tex6,CG_TEX6,"TEX6",2195,0,cgConnectorMemberParam)
-    CG_TEX7                  =  2196, // CG_BINDLOCATION_MACRO(Tex7,CG_TEX7,"TEX7",2196,0,cgConnectorMemberParam)
-
-    CG_HPOS                  =  2243, // CG_BINDLOCATION_MACRO(HPos,CG_HPOS,"HPOS",2243,0,cgConnectorMemberParam)
-    CG_COL0                  =  2245, // CG_BINDLOCATION_MACRO(Col0,CG_COL0,"COL0",2245,0,cgConnectorMemberParam)
-    CG_COL1                  =  2246, // CG_BINDLOCATION_MACRO(Col1,CG_COL1,"COL1",2246,0,cgConnectorMemberParam)
-    CG_COL2                  =  2247, // CG_BINDLOCATION_MACRO(Col2,CG_COL2,"COL2",2247,0,cgConnectorMemberParam)
-    CG_COL3                  =  2248, // CG_BINDLOCATION_MACRO(Col3,CG_COL3,"COL3",2248,0,cgConnectorMemberParam)
-    CG_PSIZ                  =  2309, // CG_BINDLOCATION_MACRO(PSiz,CG_PSIZ,"PSIZ",2309,0,cgConnectorMemberParam)
-    CG_WPOS                  =  2373, // CG_BINDLOCATION_MACRO(WPos,CG_WPOS,"WPOS",2373,0,cgConnectorMemberParam)
-
-    CG_POSITION0             =  2437, // CG_BINDLOCATION_MACRO(Position0,CG_POSITION0,"POSITION0",2437,0,cgConnectorMemberParam)
-    CG_POSITION1             =  2438, // CG_BINDLOCATION_MACRO(Position1,CG_POSITION1,"POSITION1",2438,0,cgConnectorMemberParam)
-    CG_POSITION2             =  2439, // CG_BINDLOCATION_MACRO(Position2,CG_POSITION2,"POSITION2",2439,0,cgConnectorMemberParam)
-    CG_POSITION3             =  2440, // CG_BINDLOCATION_MACRO(Position3,CG_POSITION3,"POSITION3",2440,0,cgConnectorMemberParam)
-    CG_POSITION4             =  2441, // CG_BINDLOCATION_MACRO(Position4,CG_POSITION4,"POSITION4",2441,0,cgConnectorMemberParam)
-    CG_POSITION5             =  2442, // CG_BINDLOCATION_MACRO(Position5,CG_POSITION5,"POSITION5",2442,0,cgConnectorMemberParam)
-    CG_POSITION6             =  2443, // CG_BINDLOCATION_MACRO(Position6,CG_POSITION6,"POSITION6",2443,0,cgConnectorMemberParam)
-    CG_POSITION7             =  2444, // CG_BINDLOCATION_MACRO(Position7,CG_POSITION7,"POSITION7",2444,0,cgConnectorMemberParam)
-    CG_POSITION8             =  2445, // CG_BINDLOCATION_MACRO(Position8,CG_POSITION8,"POSITION8",2445,0,cgConnectorMemberParam)
-    CG_POSITION9             =  2446, // CG_BINDLOCATION_MACRO(Position9,CG_POSITION9,"POSITION9",2446,0,cgConnectorMemberParam)
-    CG_POSITION10            =  2447, // CG_BINDLOCATION_MACRO(Position10,CG_POSITION10,"POSITION10",2447,0,cgConnectorMemberParam)
-    CG_POSITION11            =  2448, // CG_BINDLOCATION_MACRO(Position11,CG_POSITION11,"POSITION11",2448,0,cgConnectorMemberParam)
-    CG_POSITION12            =  2449, // CG_BINDLOCATION_MACRO(Position12,CG_POSITION12,"POSITION12",2449,0,cgConnectorMemberParam)
-    CG_POSITION13            =  2450, // CG_BINDLOCATION_MACRO(Position13,CG_POSITION13,"POSITION13",2450,0,cgConnectorMemberParam)
-    CG_POSITION14            =  2451, // CG_BINDLOCATION_MACRO(Position14,CG_POSITION14,"POSITION14",2451,0,cgConnectorMemberParam)
-    CG_POSITION15            =  2452, // CG_BINDLOCATION_MACRO(Position15,CG_POSITION15,"POSITION15",2452,0,cgConnectorMemberParam)
-    CG_DIFFUSE0              =  2501, // CG_BINDLOCATION_MACRO(Diffuse0,CG_DIFFUSE0,"DIFFUSE0",2501,0,cgConnectorMemberParam)
-    CG_TANGENT0              =  2565, // CG_BINDLOCATION_MACRO(Tangent0,CG_TANGENT0,"TANGENT0",2565,0,cgConnectorMemberParam)
-    CG_TANGENT1              =  2566, // CG_BINDLOCATION_MACRO(Tangent1,CG_TANGENT1,"TANGENT1",2566,0,cgConnectorMemberParam)
-    CG_TANGENT2              =  2567, // CG_BINDLOCATION_MACRO(Tangent2,CG_TANGENT2,"TANGENT2",2567,0,cgConnectorMemberParam)
-    CG_TANGENT3              =  2568, // CG_BINDLOCATION_MACRO(Tangent3,CG_TANGENT3,"TANGENT3",2568,0,cgConnectorMemberParam)
-    CG_TANGENT4              =  2569, // CG_BINDLOCATION_MACRO(Tangent4,CG_TANGENT4,"TANGENT4",2569,0,cgConnectorMemberParam)
-    CG_TANGENT5              =  2570, // CG_BINDLOCATION_MACRO(Tangent5,CG_TANGENT5,"TANGENT5",2570,0,cgConnectorMemberParam)
-    CG_TANGENT6              =  2571, // CG_BINDLOCATION_MACRO(Tangent6,CG_TANGENT6,"TANGENT6",2571,0,cgConnectorMemberParam)
-    CG_TANGENT7              =  2572, // CG_BINDLOCATION_MACRO(Tangent7,CG_TANGENT7,"TANGENT7",2572,0,cgConnectorMemberParam)
-    CG_TANGENT8              =  2573, // CG_BINDLOCATION_MACRO(Tangent8,CG_TANGENT8,"TANGENT8",2573,0,cgConnectorMemberParam)
-    CG_TANGENT9              =  2574, // CG_BINDLOCATION_MACRO(Tangent9,CG_TANGENT9,"TANGENT9",2574,0,cgConnectorMemberParam)
-    CG_TANGENT10             =  2575, // CG_BINDLOCATION_MACRO(Tangent10,CG_TANGENT10,"TANGENT10",2575,0,cgConnectorMemberParam)
-    CG_TANGENT11             =  2576, // CG_BINDLOCATION_MACRO(Tangent11,CG_TANGENT11,"TANGENT11",2576,0,cgConnectorMemberParam)
-    CG_TANGENT12             =  2577, // CG_BINDLOCATION_MACRO(Tangent12,CG_TANGENT12,"TANGENT12",2577,0,cgConnectorMemberParam)
-    CG_TANGENT13             =  2578, // CG_BINDLOCATION_MACRO(Tangent13,CG_TANGENT13,"TANGENT13",2578,0,cgConnectorMemberParam)
-    CG_TANGENT14             =  2579, // CG_BINDLOCATION_MACRO(Tangent14,CG_TANGENT14,"TANGENT14",2579,0,cgConnectorMemberParam)
-    CG_TANGENT15             =  2580, // CG_BINDLOCATION_MACRO(Tangent15,CG_TANGENT15,"TANGENT15",2580,0,cgConnectorMemberParam)
-    CG_SPECULAR0             =  2629, // CG_BINDLOCATION_MACRO(Specular0,CG_SPECULAR0,"SPECULAR0",2629,0,cgConnectorMemberParam)
-    CG_BLENDINDICES0         =  2693, // CG_BINDLOCATION_MACRO(BlendIndices0,CG_BLENDINDICES0,"BLENDINDICES0",2693,0,cgConnectorMemberParam)
-    CG_BLENDINDICES1         =  2694, // CG_BINDLOCATION_MACRO(BlendIndices1,CG_BLENDINDICES1,"BLENDINDICES1",2694,0,cgConnectorMemberParam)
-    CG_BLENDINDICES2         =  2695, // CG_BINDLOCATION_MACRO(BlendIndices2,CG_BLENDINDICES2,"BLENDINDICES2",2695,0,cgConnectorMemberParam)
-    CG_BLENDINDICES3         =  2696, // CG_BINDLOCATION_MACRO(BlendIndices3,CG_BLENDINDICES3,"BLENDINDICES3",2696,0,cgConnectorMemberParam)
-    CG_BLENDINDICES4         =  2697, // CG_BINDLOCATION_MACRO(BlendIndices4,CG_BLENDINDICES4,"BLENDINDICES4",2697,0,cgConnectorMemberParam)
-    CG_BLENDINDICES5         =  2698, // CG_BINDLOCATION_MACRO(BlendIndices5,CG_BLENDINDICES5,"BLENDINDICES5",2698,0,cgConnectorMemberParam)
-    CG_BLENDINDICES6         =  2699, // CG_BINDLOCATION_MACRO(BlendIndices6,CG_BLENDINDICES6,"BLENDINDICES6",2699,0,cgConnectorMemberParam)
-    CG_BLENDINDICES7         =  2700, // CG_BINDLOCATION_MACRO(BlendIndices7,CG_BLENDINDICES7,"BLENDINDICES7",2700,0,cgConnectorMemberParam)
-    CG_BLENDINDICES8         =  2701, // CG_BINDLOCATION_MACRO(BlendIndices8,CG_BLENDINDICES8,"BLENDINDICES8",2701,0,cgConnectorMemberParam)
-    CG_BLENDINDICES9         =  2702, // CG_BINDLOCATION_MACRO(BlendIndices9,CG_BLENDINDICES9,"BLENDINDICES9",2702,0,cgConnectorMemberParam)
-    CG_BLENDINDICES10        =  2703, // CG_BINDLOCATION_MACRO(BlendIndices10,CG_BLENDINDICES10,"BLENDINDICES10",2703,0,cgConnectorMemberParam)
-    CG_BLENDINDICES11        =  2704, // CG_BINDLOCATION_MACRO(BlendIndices11,CG_BLENDINDICES11,"BLENDINDICES11",2704,0,cgConnectorMemberParam)
-    CG_BLENDINDICES12        =  2705, // CG_BINDLOCATION_MACRO(BlendIndices12,CG_BLENDINDICES12,"BLENDINDICES12",2705,0,cgConnectorMemberParam)
-    CG_BLENDINDICES13        =  2706, // CG_BINDLOCATION_MACRO(BlendIndices13,CG_BLENDINDICES13,"BLENDINDICES13",2706,0,cgConnectorMemberParam)
-    CG_BLENDINDICES14        =  2707, // CG_BINDLOCATION_MACRO(BlendIndices14,CG_BLENDINDICES14,"BLENDINDICES14",2707,0,cgConnectorMemberParam)
-    CG_BLENDINDICES15        =  2708, // CG_BINDLOCATION_MACRO(BlendIndices15,CG_BLENDINDICES15,"BLENDINDICES15",2708,0,cgConnectorMemberParam)
-    CG_COLOR0                =  2757, // CG_BINDLOCATION_MACRO(Color0,CG_COLOR0,"COLOR0",2757,0,cgConnectorMemberParam)
-    CG_COLOR1                =  2758, // CG_BINDLOCATION_MACRO(Color1,CG_COLOR1,"COLOR1",2758,0,cgConnectorMemberParam)
-    CG_COLOR2                =  2759, // CG_BINDLOCATION_MACRO(Color2,CG_COLOR2,"COLOR2",2759,0,cgConnectorMemberParam)
-    CG_COLOR3                =  2760, // CG_BINDLOCATION_MACRO(Color3,CG_COLOR3,"COLOR3",2760,0,cgConnectorMemberParam)
-    CG_COLOR4                =  2761, // CG_BINDLOCATION_MACRO(Color4,CG_COLOR4,"COLOR4",2761,0,cgConnectorMemberParam)
-    CG_COLOR5                =  2762, // CG_BINDLOCATION_MACRO(Color5,CG_COLOR5,"COLOR5",2762,0,cgConnectorMemberParam)
-    CG_COLOR6                =  2763, // CG_BINDLOCATION_MACRO(Color6,CG_COLOR6,"COLOR6",2763,0,cgConnectorMemberParam)
-    CG_COLOR7                =  2764, // CG_BINDLOCATION_MACRO(Color7,CG_COLOR7,"COLOR7",2764,0,cgConnectorMemberParam)
-    CG_COLOR8                =  2765, // CG_BINDLOCATION_MACRO(Color8,CG_COLOR8,"COLOR8",2765,0,cgConnectorMemberParam)
-    CG_COLOR9                =  2766, // CG_BINDLOCATION_MACRO(Color9,CG_COLOR9,"COLOR9",2766,0,cgConnectorMemberParam)
-    CG_COLOR10               =  2767, // CG_BINDLOCATION_MACRO(Color10,CG_COLOR10,"COLOR10",2767,0,cgConnectorMemberParam)
-    CG_COLOR11               =  2768, // CG_BINDLOCATION_MACRO(Color11,CG_COLOR11,"COLOR11",2768,0,cgConnectorMemberParam)
-    CG_COLOR12               =  2769, // CG_BINDLOCATION_MACRO(Color12,CG_COLOR12,"COLOR12",2769,0,cgConnectorMemberParam)
-    CG_COLOR13               =  2770, // CG_BINDLOCATION_MACRO(Color13,CG_COLOR13,"COLOR13",2770,0,cgConnectorMemberParam)
-    CG_COLOR14               =  2771, // CG_BINDLOCATION_MACRO(Color14,CG_COLOR14,"COLOR14",2771,0,cgConnectorMemberParam)
-    CG_COLOR15               =  2772, // CG_BINDLOCATION_MACRO(Color15,CG_COLOR15,"COLOR15",2772,0,cgConnectorMemberParam)
-    CG_PSIZE0                =  2821, // CG_BINDLOCATION_MACRO(PSize0,CG_PSIZE0,"PSIZE0",2821,0,cgConnectorMemberParam)
-    CG_PSIZE1                =  2822, // CG_BINDLOCATION_MACRO(PSize1,CG_PSIZE1,"PSIZE1",2822,0,cgConnectorMemberParam)
-    CG_PSIZE2                =  2823, // CG_BINDLOCATION_MACRO(PSize2,CG_PSIZE2,"PSIZE2",2823,0,cgConnectorMemberParam)
-    CG_PSIZE3                =  2824, // CG_BINDLOCATION_MACRO(PSize3,CG_PSIZE3,"PSIZE3",2824,0,cgConnectorMemberParam)
-    CG_PSIZE4                =  2825, // CG_BINDLOCATION_MACRO(PSize4,CG_PSIZE4,"PSIZE4",2825,0,cgConnectorMemberParam)
-    CG_PSIZE5                =  2826, // CG_BINDLOCATION_MACRO(PSize5,CG_PSIZE5,"PSIZE5",2826,0,cgConnectorMemberParam)
-    CG_PSIZE6                =  2827, // CG_BINDLOCATION_MACRO(PSize6,CG_PSIZE6,"PSIZE6",2827,0,cgConnectorMemberParam)
-    CG_PSIZE7                =  2828, // CG_BINDLOCATION_MACRO(PSize7,CG_PSIZE7,"PSIZE7",2828,0,cgConnectorMemberParam)
-    CG_PSIZE8                =  2829, // CG_BINDLOCATION_MACRO(PSize8,CG_PSIZE8,"PSIZE8",2829,0,cgConnectorMemberParam)
-    CG_PSIZE9                =  2830, // CG_BINDLOCATION_MACRO(PSize9,CG_PSIZE9,"PSIZE9",2830,0,cgConnectorMemberParam)
-    CG_PSIZE10               =  2831, // CG_BINDLOCATION_MACRO(PSize10,CG_PSIZE10,"PSIZE10",2831,0,cgConnectorMemberParam)
-    CG_PSIZE11               =  2832, // CG_BINDLOCATION_MACRO(PSize11,CG_PSIZE11,"PSIZE11",2832,0,cgConnectorMemberParam)
-    CG_PSIZE12               =  2833, // CG_BINDLOCATION_MACRO(PSize12,CG_PSIZE12,"PSIZE12",2833,0,cgConnectorMemberParam)
-    CG_PSIZE13               =  2834, // CG_BINDLOCATION_MACRO(PSize13,CG_PSIZE13,"PSIZE13",2834,0,cgConnectorMemberParam)
-    CG_PSIZE14               =  2835, // CG_BINDLOCATION_MACRO(PSize14,CG_PSIZE14,"PSIZE14",2835,0,cgConnectorMemberParam)
-    CG_PSIZE15               =  2836, // CG_BINDLOCATION_MACRO(PSize15,CG_PSIZE15,"PSIZE15",2836,0,cgConnectorMemberParam)
-    CG_BINORMAL0             =  2885, // CG_BINDLOCATION_MACRO(BiNormal0,CG_BINORMAL0,"BINORMAL0",2885,0,cgConnectorMemberParam)
-    CG_BINORMAL1             =  2886, // CG_BINDLOCATION_MACRO(BiNormal1,CG_BINORMAL1,"BINORMAL1",2886,0,cgConnectorMemberParam)
-    CG_BINORMAL2             =  2887, // CG_BINDLOCATION_MACRO(BiNormal2,CG_BINORMAL2,"BINORMAL2",2887,0,cgConnectorMemberParam)
-    CG_BINORMAL3             =  2888, // CG_BINDLOCATION_MACRO(BiNormal3,CG_BINORMAL3,"BINORMAL3",2888,0,cgConnectorMemberParam)
-    CG_BINORMAL4             =  2889, // CG_BINDLOCATION_MACRO(BiNormal4,CG_BINORMAL4,"BINORMAL4",2889,0,cgConnectorMemberParam)
-    CG_BINORMAL5             =  2890, // CG_BINDLOCATION_MACRO(BiNormal5,CG_BINORMAL5,"BINORMAL5",2890,0,cgConnectorMemberParam)
-    CG_BINORMAL6             =  2891, // CG_BINDLOCATION_MACRO(BiNormal6,CG_BINORMAL6,"BINORMAL6",2891,0,cgConnectorMemberParam)
-    CG_BINORMAL7             =  2892, // CG_BINDLOCATION_MACRO(BiNormal7,CG_BINORMAL7,"BINORMAL7",2892,0,cgConnectorMemberParam)
-    CG_BINORMAL8             =  2893, // CG_BINDLOCATION_MACRO(BiNormal8,CG_BINORMAL8,"BINORMAL8",2893,0,cgConnectorMemberParam)
-    CG_BINORMAL9             =  2894, // CG_BINDLOCATION_MACRO(BiNormal9,CG_BINORMAL9,"BINORMAL9",2894,0,cgConnectorMemberParam)
-    CG_BINORMAL10            =  2895, // CG_BINDLOCATION_MACRO(BiNormal10,CG_BINORMAL10,"BINORMAL10",2895,0,cgConnectorMemberParam)
-    CG_BINORMAL11            =  2896, // CG_BINDLOCATION_MACRO(BiNormal11,CG_BINORMAL11,"BINORMAL11",2896,0,cgConnectorMemberParam)
-    CG_BINORMAL12            =  2897, // CG_BINDLOCATION_MACRO(BiNormal12,CG_BINORMAL12,"BINORMAL12",2897,0,cgConnectorMemberParam)
-    CG_BINORMAL13            =  2898, // CG_BINDLOCATION_MACRO(BiNormal13,CG_BINORMAL13,"BINORMAL13",2898,0,cgConnectorMemberParam)
-    CG_BINORMAL14            =  2899, // CG_BINDLOCATION_MACRO(BiNormal14,CG_BINORMAL14,"BINORMAL14",2899,0,cgConnectorMemberParam)
-    CG_BINORMAL15            =  2900, // CG_BINDLOCATION_MACRO(BiNormal15,CG_BINORMAL15,"BINORMAL15",2900,0,cgConnectorMemberParam)
-    CG_FOG0                  =  2917, // CG_BINDLOCATION_MACRO(FOG0,CG_FOG0,"FOG0",2917,0,cgConnectorMemberParam)
-    CG_FOG1                  =  2918, // CG_BINDLOCATION_MACRO(FOG1,CG_FOG1,"FOG1",2918,0,cgConnectorMemberParam)
-    CG_FOG2                  =  2919, // CG_BINDLOCATION_MACRO(FOG2,CG_FOG2,"FOG2",2919,0,cgConnectorMemberParam)
-    CG_FOG3                  =  2920, // CG_BINDLOCATION_MACRO(FOG3,CG_FOG3,"FOG3",2920,0,cgConnectorMemberParam)
-    CG_FOG4                  =  2921, // CG_BINDLOCATION_MACRO(FOG4,CG_FOG4,"FOG4",2921,0,cgConnectorMemberParam)
-    CG_FOG5                  =  2922, // CG_BINDLOCATION_MACRO(FOG5,CG_FOG5,"FOG5",2922,0,cgConnectorMemberParam)
-    CG_FOG6                  =  2923, // CG_BINDLOCATION_MACRO(FOG6,CG_FOG6,"FOG6",2923,0,cgConnectorMemberParam)
-    CG_FOG7                  =  2924, // CG_BINDLOCATION_MACRO(FOG7,CG_FOG7,"FOG7",2924,0,cgConnectorMemberParam)
-    CG_FOG8                  =  2925, // CG_BINDLOCATION_MACRO(FOG8,CG_FOG8,"FOG8",2925,0,cgConnectorMemberParam)
-    CG_FOG9                  =  2926, // CG_BINDLOCATION_MACRO(FOG9,CG_FOG9,"FOG9",2926,0,cgConnectorMemberParam)
-    CG_FOG10                 =  2927, // CG_BINDLOCATION_MACRO(FOG10,CG_FOG10,"FOG10",2927,0,cgConnectorMemberParam)
-    CG_FOG11                 =  2928, // CG_BINDLOCATION_MACRO(FOG11,CG_FOG11,"FOG11",2928,0,cgConnectorMemberParam)
-    CG_FOG12                 =  2929, // CG_BINDLOCATION_MACRO(FOG12,CG_FOG12,"FOG12",2929,0,cgConnectorMemberParam)
-    CG_FOG13                 =  2930, // CG_BINDLOCATION_MACRO(FOG13,CG_FOG13,"FOG13",2930,0,cgConnectorMemberParam)
-    CG_FOG14                 =  2931, // CG_BINDLOCATION_MACRO(FOG14,CG_FOG14,"FOG14",2931,0,cgConnectorMemberParam)
-    CG_FOG15                 =  2932, // CG_BINDLOCATION_MACRO(FOG15,CG_FOG15,"FOG15",2932,0,cgConnectorMemberParam)
-    CG_DEPTH0                =  2933, // CG_BINDLOCATION_MACRO(DEPTH0,CG_DEPTH0,"DEPTH0",2933,0,cgConnectorMemberParam)
-    CG_DEPTH1                =  2934, // CG_BINDLOCATION_MACRO(DEPTH1,CG_DEPTH1,"DEPTH1",2934,0,cgConnectorMemberParam)
-    CG_DEPTH2                =  2935, // CG_BINDLOCATION_MACRO(DEPTH2,CG_DEPTH2,"DEPTH2",2935,0,cgConnectorMemberParam)
-    CG_DEPTH3                =  2936, // CG_BINDLOCATION_MACRO(DEPTH3,CG_DEPTH3,"DEPTH3",2936,0,cgConnectorMemberParam)
-    CG_DEPTH4                =  2937, // CG_BINDLOCATION_MACRO(DEPTH4,CG_DEPTH4,"DEPTH4",2937,0,cgConnectorMemberParam)
-    CG_DEPTH5                =  2938, // CG_BINDLOCATION_MACRO(DEPTH5,CG_DEPTH5,"DEPTH5",2938,0,cgConnectorMemberParam)
-    CG_DEPTH6                =  2939, // CG_BINDLOCATION_MACRO(DEPTH6,CG_DEPTH6,"DEPTH6",2939,0,cgConnectorMemberParam)
-    CG_DEPTH7                =  2940, // CG_BINDLOCATION_MACRO(DEPTH7,CG_DEPTH7,"DEPTH7",2940,0,cgConnectorMemberParam)
-    CG_DEPTH8                =  2941, // CG_BINDLOCATION_MACRO(DEPTH8,CG_DEPTH8,"DEPTH8",2941,0,cgConnectorMemberParam)
-//TODO: what THE @#$% !!! ('29542')
-    CG_DEPTH9                = 29542, // CG_BINDLOCATION_MACRO(DEPTH9,CG_DEPTH9,"DEPTH9",29542,0,cgConnectorMemberParam)
-    CG_DEPTH10               =  2943, // CG_BINDLOCATION_MACRO(DEPTH10,CG_DEPTH10,"DEPTH10",2943,0,cgConnectorMemberParam)
-    CG_DEPTH11               =  2944, // CG_BINDLOCATION_MACRO(DEPTH11,CG_DEPTH11,"DEPTH11",2944,0,cgConnectorMemberParam)
-    CG_DEPTH12               =  2945, // CG_BINDLOCATION_MACRO(DEPTH12,CG_DEPTH12,"DEPTH12",2945,0,cgConnectorMemberParam)
-    CG_DEPTH13               =  2946, // CG_BINDLOCATION_MACRO(DEPTH13,CG_DEPTH13,"DEPTH13",2946,0,cgConnectorMemberParam)
-    CG_DEPTH14               =  2947, // CG_BINDLOCATION_MACRO(DEPTH14,CG_DEPTH14,"DEPTH14",2947,0,cgConnectorMemberParam)
-    CG_DEPTH15               =  2948, // CG_BINDLOCATION_MACRO(DEPTH15,CG_DEPTH15,"DEPTH15",2948,0,cgConnectorMemberParam)
-    CG_SAMPLE0               =  2949, // CG_BINDLOCATION_MACRO(SAMPLE0,CG_SAMPLE0,"SAMPLE0",2949,0,cgConnectorMemberParam)
-    CG_SAMPLE1               =  2950, // CG_BINDLOCATION_MACRO(SAMPLE1,CG_SAMPLE1,"SAMPLE1",2950,0,cgConnectorMemberParam)
-    CG_SAMPLE2               =  2951, // CG_BINDLOCATION_MACRO(SAMPLE2,CG_SAMPLE2,"SAMPLE2",2951,0,cgConnectorMemberParam)
-    CG_SAMPLE3               =  2952, // CG_BINDLOCATION_MACRO(SAMPLE3,CG_SAMPLE3,"SAMPLE3",2952,0,cgConnectorMemberParam)
-    CG_SAMPLE4               =  2953, // CG_BINDLOCATION_MACRO(SAMPLE4,CG_SAMPLE4,"SAMPLE4",2953,0,cgConnectorMemberParam)
-    CG_SAMPLE5               =  2954, // CG_BINDLOCATION_MACRO(SAMPLE5,CG_SAMPLE5,"SAMPLE5",2954,0,cgConnectorMemberParam)
-    CG_SAMPLE6               =  2955, // CG_BINDLOCATION_MACRO(SAMPLE6,CG_SAMPLE6,"SAMPLE6",2955,0,cgConnectorMemberParam)
-    CG_SAMPLE7               =  2956, // CG_BINDLOCATION_MACRO(SAMPLE7,CG_SAMPLE7,"SAMPLE7",2956,0,cgConnectorMemberParam)
-    CG_SAMPLE8               =  2957, // CG_BINDLOCATION_MACRO(SAMPLE8,CG_SAMPLE8,"SAMPLE8",2957,0,cgConnectorMemberParam)
-    CG_SAMPLE9               =  2958, // CG_BINDLOCATION_MACRO(SAMPLE9,CG_SAMPLE9,"SAMPLE9",2958,0,cgConnectorMemberParam)
-    CG_SAMPLE10              =  2959, // CG_BINDLOCATION_MACRO(SAMPLE10,CG_SAMPLE10,"SAMPLE10",2959,0,cgConnectorMemberParam)
-    CG_SAMPLE11              =  2960, // CG_BINDLOCATION_MACRO(SAMPLE11,CG_SAMPLE11,"SAMPLE11",2960,0,cgConnectorMemberParam)
-    CG_SAMPLE12              =  2961, // CG_BINDLOCATION_MACRO(SAMPLE12,CG_SAMPLE12,"SAMPLE12",2961,0,cgConnectorMemberParam)
-    CG_SAMPLE13              =  2962, // CG_BINDLOCATION_MACRO(SAMPLE13,CG_SAMPLE13,"SAMPLE13",2962,0,cgConnectorMemberParam)
-    CG_SAMPLE14              =  2963, // CG_BINDLOCATION_MACRO(SAMPLE14,CG_SAMPLE14,"SAMPLE14",2963,0,cgConnectorMemberParam)
-    CG_SAMPLE15              =  2964, // CG_BINDLOCATION_MACRO(SAMPLE15,CG_SAMPLE15,"SAMPLE15",2964,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT0          =  3028, // CG_BINDLOCATION_MACRO(BlendWeight0,CG_BLENDWEIGHT0,"BLENDWEIGHT0",3028,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT1          =  3029, // CG_BINDLOCATION_MACRO(BlendWeight1,CG_BLENDWEIGHT1,"BLENDWEIGHT1",3029,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT2          =  3030, // CG_BINDLOCATION_MACRO(BlendWeight2,CG_BLENDWEIGHT2,"BLENDWEIGHT2",3030,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT3          =  3031, // CG_BINDLOCATION_MACRO(BlendWeight3,CG_BLENDWEIGHT3,"BLENDWEIGHT3",3031,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT4          =  3032, // CG_BINDLOCATION_MACRO(BlendWeight4,CG_BLENDWEIGHT4,"BLENDWEIGHT4",3032,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT5          =  3033, // CG_BINDLOCATION_MACRO(BlendWeight5,CG_BLENDWEIGHT5,"BLENDWEIGHT5",3033,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT6          =  3034, // CG_BINDLOCATION_MACRO(BlendWeight6,CG_BLENDWEIGHT6,"BLENDWEIGHT6",3034,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT7          =  3035, // CG_BINDLOCATION_MACRO(BlendWeight7,CG_BLENDWEIGHT7,"BLENDWEIGHT7",3035,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT8          =  3036, // CG_BINDLOCATION_MACRO(BlendWeight8,CG_BLENDWEIGHT8,"BLENDWEIGHT8",3036,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT9          =  3037, // CG_BINDLOCATION_MACRO(BlendWeight9,CG_BLENDWEIGHT9,"BLENDWEIGHT9",3037,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT10         =  3038, // CG_BINDLOCATION_MACRO(BlendWeight10,CG_BLENDWEIGHT10,"BLENDWEIGHT10",3038,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT11         =  3039, // CG_BINDLOCATION_MACRO(BlendWeight11,CG_BLENDWEIGHT11,"BLENDWEIGHT11",3039,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT12         =  3040, // CG_BINDLOCATION_MACRO(BlendWeight12,CG_BLENDWEIGHT12,"BLENDWEIGHT12",3040,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT13         =  3041, // CG_BINDLOCATION_MACRO(BlendWeight13,CG_BLENDWEIGHT13,"BLENDWEIGHT13",3041,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT14         =  3042, // CG_BINDLOCATION_MACRO(BlendWeight14,CG_BLENDWEIGHT14,"BLENDWEIGHT14",3042,0,cgConnectorMemberParam)
-    CG_BLENDWEIGHT15         =  3043, // CG_BINDLOCATION_MACRO(BlendWeight15,CG_BLENDWEIGHT15,"BLENDWEIGHT15",3043,0,cgConnectorMemberParam)
-    CG_NORMAL0               =  3092, // CG_BINDLOCATION_MACRO(Normal0,CG_NORMAL0,"NORMAL0",3092,0,cgConnectorMemberParam)
-    CG_NORMAL1               =  3093, // CG_BINDLOCATION_MACRO(Normal1,CG_NORMAL1,"NORMAL1",3093,0,cgConnectorMemberParam)
-    CG_NORMAL2               =  3094, // CG_BINDLOCATION_MACRO(Normal2,CG_NORMAL2,"NORMAL2",3094,0,cgConnectorMemberParam)
-    CG_NORMAL3               =  3095, // CG_BINDLOCATION_MACRO(Normal3,CG_NORMAL3,"NORMAL3",3095,0,cgConnectorMemberParam)
-    CG_NORMAL4               =  3096, // CG_BINDLOCATION_MACRO(Normal4,CG_NORMAL4,"NORMAL4",3096,0,cgConnectorMemberParam)
-    CG_NORMAL5               =  3097, // CG_BINDLOCATION_MACRO(Normal5,CG_NORMAL5,"NORMAL5",3097,0,cgConnectorMemberParam)
-    CG_NORMAL6               =  3098, // CG_BINDLOCATION_MACRO(Normal6,CG_NORMAL6,"NORMAL6",3098,0,cgConnectorMemberParam)
-    CG_NORMAL7               =  3099, // CG_BINDLOCATION_MACRO(Normal7,CG_NORMAL7,"NORMAL7",3099,0,cgConnectorMemberParam)
-    CG_NORMAL8               =  3100, // CG_BINDLOCATION_MACRO(Normal8,CG_NORMAL8,"NORMAL8",3100,0,cgConnectorMemberParam)
-    CG_NORMAL9               =  3101, // CG_BINDLOCATION_MACRO(Normal9,CG_NORMAL9,"NORMAL9",3101,0,cgConnectorMemberParam)
-    CG_NORMAL10              =  3102, // CG_BINDLOCATION_MACRO(Normal10,CG_NORMAL10,"NORMAL10",3102,0,cgConnectorMemberParam)
-    CG_NORMAL11              =  3103, // CG_BINDLOCATION_MACRO(Normal11,CG_NORMAL11,"NORMAL11",3103,0,cgConnectorMemberParam)
-    CG_NORMAL12              =  3104, // CG_BINDLOCATION_MACRO(Normal12,CG_NORMAL12,"NORMAL12",3104,0,cgConnectorMemberParam)
-    CG_NORMAL13              =  3105, // CG_BINDLOCATION_MACRO(Normal13,CG_NORMAL13,"NORMAL13",3105,0,cgConnectorMemberParam)
-    CG_NORMAL14              =  3106, // CG_BINDLOCATION_MACRO(Normal14,CG_NORMAL14,"NORMAL14",3106,0,cgConnectorMemberParam)
-    CG_NORMAL15              =  3107, // CG_BINDLOCATION_MACRO(Normal15,CG_NORMAL15,"NORMAL15",3107,0,cgConnectorMemberParam)
-    CG_FOGCOORD              =  3156, // CG_BINDLOCATION_MACRO(FogCoord,CG_FOGCOORD,"FOGCOORD",3156,0,cgConnectorMemberParam)
-    CG_TEXCOORD0             =  3220, // CG_BINDLOCATION_MACRO(TexCoord0,CG_TEXCOORD0,"TEXCOORD0",3220,0,cgConnectorMemberParam)
-    CG_TEXCOORD1             =  3221, // CG_BINDLOCATION_MACRO(TexCoord1,CG_TEXCOORD1,"TEXCOORD1",3221,0,cgConnectorMemberParam)
-    CG_TEXCOORD2             =  3222, // CG_BINDLOCATION_MACRO(TexCoord2,CG_TEXCOORD2,"TEXCOORD2",3222,0,cgConnectorMemberParam)
-    CG_TEXCOORD3             =  3223, // CG_BINDLOCATION_MACRO(TexCoord3,CG_TEXCOORD3,"TEXCOORD3",3223,0,cgConnectorMemberParam)
-    CG_TEXCOORD4             =  3224, // CG_BINDLOCATION_MACRO(TexCoord4,CG_TEXCOORD4,"TEXCOORD4",3224,0,cgConnectorMemberParam)
-    CG_TEXCOORD5             =  3225, // CG_BINDLOCATION_MACRO(TexCoord5,CG_TEXCOORD5,"TEXCOORD5",3225,0,cgConnectorMemberParam)
-    CG_TEXCOORD6             =  3226, // CG_BINDLOCATION_MACRO(TexCoord6,CG_TEXCOORD6,"TEXCOORD6",3226,0,cgConnectorMemberParam)
-    CG_TEXCOORD7             =  3227, // CG_BINDLOCATION_MACRO(TexCoord7,CG_TEXCOORD7,"TEXCOORD7",3227,0,cgConnectorMemberParam)
-    CG_TEXCOORD8             =  3228, // CG_BINDLOCATION_MACRO(TexCoord8,CG_TEXCOORD8,"TEXCOORD8",3228,0,cgConnectorMemberParam)
-    CG_TEXCOORD9             =  3229, // CG_BINDLOCATION_MACRO(TexCoord9,CG_TEXCOORD9,"TEXCOORD9",3229,0,cgConnectorMemberParam)
-    CG_TEXCOORD10            =  3230, // CG_BINDLOCATION_MACRO(TexCoord10,CG_TEXCOORD10,"TEXCOORD10",3230,0,cgConnectorMemberParam)
-    CG_TEXCOORD11            =  3231, // CG_BINDLOCATION_MACRO(TexCoord11,CG_TEXCOORD11,"TEXCOORD11",3231,0,cgConnectorMemberParam)
-    CG_TEXCOORD12            =  3232, // CG_BINDLOCATION_MACRO(TexCoord12,CG_TEXCOORD12,"TEXCOORD12",3232,0,cgConnectorMemberParam)
-    CG_TEXCOORD13            =  3233, // CG_BINDLOCATION_MACRO(TexCoord13,CG_TEXCOORD13,"TEXCOORD13",3233,0,cgConnectorMemberParam)
-    CG_TEXCOORD14            =  3234, // CG_BINDLOCATION_MACRO(TexCoord14,CG_TEXCOORD14,"TEXCOORD14",3234,0,cgConnectorMemberParam)
-    CG_TEXCOORD15            =  3235, // CG_BINDLOCATION_MACRO(TexCoord15,CG_TEXCOORD15,"TEXCOORD15",3235,0,cgConnectorMemberParam)
-    CG_COMBINER_CONST0       =  3284, // CG_BINDLOCATION_MACRO(CombinerConst0,CG_COMBINER_CONST0,"COMBINER_CONST0",3284,0,cgUniformParam)
-    CG_COMBINER_CONST1       =  3285, // CG_BINDLOCATION_MACRO(CombinerConst1,CG_COMBINER_CONST1,"COMBINER_CONST1",3285,0,cgUniformParam)
-    CG_COMBINER_STAGE_CONST0 =  3286, // CG_BINDLOCATION_MACRO(CombinerStageConst0,CG_COMBINER_STAGE_CONST0,"COMBINER_STAGE_CONST0",3286,1,cgUniformParam)
-    CG_COMBINER_STAGE_CONST1 =  3287, // CG_BINDLOCATION_MACRO(CombinerStageConst1,CG_COMBINER_STAGE_CONST1,"COMBINER_STAGE_CONST1",3287,1,cgUniformParam)
-    CG_OFFSET_TEXTURE_MATRIX =  3288, // CG_BINDLOCATION_MACRO(OffsetTextureMatrix,CG_OFFSET_TEXTURE_MATRIX,"OFFSET_TEXTURE_MATRIX",3288,0,cgUniformParam)
-    CG_OFFSET_TEXTURE_SCALE  =  3289, // CG_BINDLOCATION_MACRO(OffsetTextureScale,CG_OFFSET_TEXTURE_SCALE,"OFFSET_TEXTURE_SCALE",3289,0,cgUniformParam)
-    CG_OFFSET_TEXTURE_BIAS   =  3290, // CG_BINDLOCATION_MACRO(OffsetTextureBias,CG_OFFSET_TEXTURE_BIAS,"OFFSET_TEXTURE_BIAS",3290,0,cgUniformParam)
-    CG_CONST_EYE             =  3291, // CG_BINDLOCATION_MACRO(ConstEye,CG_CONST_EYE,"CONST_EYE",3291,0,cgUniformParam)
-    CG_TESSFACTOR            =  3255, // CG_BINDLOCATION_MACRO(TessFactor,CG_TESSFACTOR,"TESSFACTOR",3255,0,cgConnectorMemberParam)
-
-    CG_UNDEFINED
-  );
-  CGresource = TCGresource;
-
- (*
-  * The following macro invocations define the supported CG profiles.
-  *
-  * The macros have the form :
-  *
-  *   CG_PROFILE_MACRO(name, compiler_id, compiler_opt)
-  *
-  *     name         : The name of the profile.  Used consistently with the API.
-  *     compiler_id  : The identifier string for the profile used by the compiler.
-  *     compiler_id_caps : compiler_id in caps.
-  *     compiler_opt : The command-line switch used to force compilation into
-  *                    the profile.
-  *     int_id           : Integer enumerant associated with this bind location.
-  *     vertex_profile   : Non-zero if this is a vertex profile, otherwise it
-  *                        is considered to be a fragment profile.
-  *
-  *
-  *)
-  TCGprofile = (
-    CG_PROFILE_START = 6144,
-    CG_PROFILE_UNKNOWN,
-
-    //# define CG_PROFILE_MACRO(name, compiler_id, compiler_id_caps, compiler_opt,int_id,vertex_profile) \
-    //   CG_PROFILE_##compiler_id_caps = int_id,
-
-    CG_PROFILE_VP20   = 6146, // CG_PROFILE_MACRO(Vertex,vp20,VP20,"vp20",6146,1)
-    CG_PROFILE_FP20   = 6147, // CG_PROFILE_MACRO(Fragment20,fp20,FP20,"fp20",6147,0)
-    CG_PROFILE_VP30   = 6148, // CG_PROFILE_MACRO(Vertex30,vp30,VP30,"vp30",6148,1)
-    CG_PROFILE_FP30   = 6149, // CG_PROFILE_MACRO(Fragment,fp30,FP30,"fp30",6149,0)
-    CG_PROFILE_ARBVP1 = 6150, // CG_PROFILE_MACRO(ARBVertex,arbvp1,ARBVP1,"arbvp1",6150,1)
-    CG_PROFILE_ARBFP1 = 7000, // CG_PROFILE_MACRO(ARBFragment,arbfp1,ARBFP1,"arbfp1",7000,0)
-    CG_PROFILE_VP40   = 7001, // CG_PROFILE_MACRO(Vertex40,vp40,VP40,"vp40",7001,1)
-    CG_PROFILE_FP40   = 6151, // CG_PROFILE_MACRO(Fragment40,fp40,FP40,"fp40",6151,0)
-
-    CG_PROFILE_VS_1_1 = 6153, // CG_PROFILE_MACRO(DX9Vertex11,vs_1_1,VS_1_1,"vs_1_1",6153,1)
-    CG_PROFILE_VS_2_0 = 6154, // CG_PROFILE_MACRO(DX9Vertex20,vs_2_0,VS_2_0,"vs_2_0",6154,1)
-    CG_PROFILE_VS_2_X = 6155, // CG_PROFILE_MACRO(DX9Vertex2x,vs_2_x,VS_2_X,"vs_2_x",6155,1)
-
-    CG_PROFILE_PS_1_1 = 6159, // CG_PROFILE_MACRO(DX9Pixel11,ps_1_1,PS_1_1,"ps_1_1",6159,0)
-    CG_PROFILE_PS_1_2 = 6160, // CG_PROFILE_MACRO(DX9Pixel12,ps_1_2,PS_1_2,"ps_1_2",6160,0)
-    CG_PROFILE_PS_1_3 = 6161, // CG_PROFILE_MACRO(DX9Pixel13,ps_1_3,PS_1_3,"ps_1_3",6161,0)
-    CG_PROFILE_PS_2_0 = 6162, // CG_PROFILE_MACRO(DX9Pixel20,ps_2_0,PS_2_0,"ps_2_0",6162,0)
-    CG_PROFILE_PS_2_X = 6163, // CG_PROFILE_MACRO(DX9Pixel2x,ps_2_x,PS_2_X,"ps_2_x",6163,0)
-
-    CG_PROFILE_MAX = 7100
-  );
-  CGprofile = TCGprofile;
-
- (*
-  * The following macro invocations define error codes returned by various cg
-  * API functions.
-  *
-  * The macros have the form :
-  *
-  *   CG_ERROR_MACRO(code, enum_name, message)
-  *
-  *     code      : The integer error code associated with the error.
-  *     enum_name : The name of enumerant of the error code in the API.
-  *     message   : A description string associated with the error.
-  *
-  *)
-  PCGerror = ^TCGerror;
-  TCGerror = DWORD;
-  CGerror = TCGerror;
-
-const
-  //# define CG_ERROR_MACRO(code, enum_name, new_enum_name, message) \
-  //   new_enum_name = code,
-  CG_NO_ERROR                       = 0;  // "No error has occurred."
-  CG_COMPILER_ERROR                 = 1;  // "The compile returned an error."
-  CG_INVALID_PARAMETER_ERROR        = 2;  // "The parameter used is invalid."
-  CG_INVALID_PROFILE_ERROR          = 3;  // "The profile is not supported."
-  CG_PROGRAM_LOAD_ERROR             = 4;  // "The program did could not load."
-  CG_PROGRAM_BIND_ERROR             = 5;  // "The program could not bind."
-  CG_PROGRAM_NOT_LOADED_ERROR       = 6;  // "The program must be loaded before this operation may be used."
-  CG_UNSUPPORTED_GL_EXTENSION_ERROR = 7;  // "An unsupported GL extension was required to perform this operation."
-  CG_INVALID_VALUE_TYPE_ERROR       = 8;  // "An unknown value type was assigned to a parameter."
-  CG_NOT_MATRIX_PARAM_ERROR         = 9;  // "The parameter is not of matrix type."
-  CG_INVALID_ENUMERANT_ERROR        = 10; // "The enumerant parameter has an invalid value."
-  CG_NOT_4x4_MATRIX_ERROR           = 11; // "The parameter must be a 4x4 matrix type."
-  CG_FILE_READ_ERROR                = 12; // "The file could not be read."
-  CG_FILE_WRITE_ERROR               = 13; // "The file could not be written."
-  CG_NVPARSE_ERROR                  = 14; // "nvparse could not successfully parse the output from the Cg compiler backend."
-  CG_MEMORY_ALLOC_ERROR             = 15; // "Memory allocation failed."
-  CG_INVALID_CONTEXT_HANDLE_ERROR   = 16; // "Invalid context handle."
-  CG_INVALID_PROGRAM_HANDLE_ERROR   = 17; // "Invalid program handle."
-  CG_INVALID_PARAM_HANDLE_ERROR     = 18; // "Invalid parameter handle."
-  CG_UNKNOWN_PROFILE_ERROR          = 19; // "The specified profile is unknown."
-  CG_VAR_ARG_ERROR                  = 20; // "The variable arguments were specified incorrectly."
-  CG_INVALID_DIMENSION_ERROR        = 21; // "The dimension value is invalid."
-  CG_ARRAY_PARAM_ERROR              = 22; // "The parameter must be an array."
-  CG_OUT_OF_ARRAY_BOUNDS_ERROR      = 23; // "Index into the array is out of bounds."
-  CG_CONFLICTING_TYPES_ERROR        = 24; // "A type being added to the context conflicts with an existing type."
-  CG_CONFLICTING_PARAMETER_TYPES_ERROR = 25; // "The parameters being bound have conflicting types."
-  CG_PARAMETER_IS_NOT_SHARED_ERROR  = 26; // "The parameter must be global."
-  CG_INVALID_PARAMETER_VARIABILITY_ERROR = 27; // "The parameter could not be changed to the given variability."
-  CG_CANNOT_DESTROY_PARAMETER_ERROR = 28; // "Cannot destroy the parameter.  It is bound to other parameters or is not a root parameter."
-  CG_NOT_ROOT_PARAMETER_ERROR       = 29; // "The parameter is not a root parameter."
-  CG_PARAMETERS_DO_NOT_MATCH_ERROR  = 30; // "The two parameters being bound do not match."
-  CG_IS_NOT_PROGRAM_PARAMETER_ERROR = 31; // "The parameter is not a program parameter."
-  CG_INVALID_PARAMETER_TYPE_ERROR   = 32; // "The type of the parameter is invalid."
-  CG_PARAMETER_IS_NOT_RESIZABLE_ARRAY_ERROR = 33; // "The parameter must be a resizable array."
-  CG_INVALID_SIZE_ERROR             = 34; // "The size value is invalid."
-  CG_BIND_CREATES_CYCLE_ERROR       = 35; // "Cannot bind the given parameters.  Binding will form a cycle."
-  CG_ARRAY_TYPES_DO_NOT_MATCH_ERROR = 36; // "Cannot bind the given parameters.  Array types do not match."
-  CG_ARRAY_DIMENSIONS_DO_NOT_MATCH_ERROR = 37; // "Cannot bind the given parameters.  Array dimensions do not match."
-  CG_ARRAY_HAS_WRONG_DIMENSION_ERROR = 38; // "The array is has the wrong dimension."
-  CG_TYPE_IS_NOT_DEFINED_IN_PROGRAM_ERROR = 39; // "Connecting the parameters failed because The type of the source parameter is not defined within the given program or does not match the type with the same name in the program."
-
-type
-  TCGenum = (
-  //todo: Insert code from here: # include <Cg/cg_enums.h>
-  //todo: FIX BCB6 issues with {$IFDEF BCB}
-    CG_UNKNOWN = 4096,
-    CG_IN,
-    CG_OUT,
-    CG_INOUT,
-    CG_MIXED,
-    CG_VARYING,
-    CG_UNIFORM,
-    CG_CONSTANT,
-    CG_PROGRAM_SOURCE,
-    CG_PROGRAM_ENTRY,
-    CG_COMPILED_PROGRAM,
-    CG_PROGRAM_PROFILE,
-
-    CG_GLOBAL,
-    CG_PROGRAM,
-
-    CG_DEFAULT,
-    CG_ERROR,
-
-    CG_SOURCE,
-    CG_OBJECT,
-
-    CG_COMPILE_MANUAL,
-    CG_COMPILE_IMMEDIATE,
-    CG_COMPILE_LAZY,
-    CG_CURRENT,
-    CG_LITERAL,
-    CG_VERSION
-  );
-  CGenum = TCGenum;
-
-type
-  TCGerrorCallbackFunc = procedure; cdecl;
-  CGerrorCallbackFunc = TCGerrorCallbackFunc;
-
-
-//******************************)
-(*** Functions                                                         ***)
-//******************************)
-
-//{$IFNDEF CG_EXPLICIT}
-
-(*** Context functions ***)
-
-function cgCreateContext: PCGcontext; cdecl; external CgLibrary;
-procedure cgDestroyContext(ctx: PCGcontext); cdecl; external CgLibrary;
-function cgIsContext(ctx: PCGcontext): TCGbool; cdecl; external CgLibrary;
-function cgGetLastListing(ctx: PCGcontext): PChar{ const }; cdecl; external CgLibrary;
-procedure cgSetAutoCompile(ctx: PCGcontext; flag: TCGenum); cdecl; external CgLibrary;
-
-  //PPChar = ^PChar; //Clootie: It's actually pointer to array of PChar strings
-
-(*** Program functions ***)
-function cgCreateProgram(ctx: PCGcontext;
-  program_type: TCGenum; const _program: PCharCG;
-  profile: TCGprofile; const entry: PCharCG;
-  const args: PPCharCG): PCGprogram; cdecl; external CgLibrary;
-function cgCreateProgramFromFile(ctx: PCGcontext;
-  program_type: TCGenum; const program_file: PCharCG;
-  profile: TCGprofile; const entry: PCharCG;
-  const args: PPCharCG): PCGprogram; cdecl; external CgLibrary;
-function cgCopyProgram(_program: PCGprogram): PCGprogram; cdecl; external CgLibrary;
-procedure cgDestroyProgram(_program: PCGprogram); cdecl; external CgLibrary;
-
-function cgGetFirstProgram(ctx: PCGcontext): PCGprogram; cdecl; external CgLibrary;
-function cgGetNextProgram(current: PCGprogram): PCGprogram; cdecl; external CgLibrary;
-function cgGetProgramContext(prog: PCGprogram): PCGcontext; cdecl; external CgLibrary;
-function cgIsProgram(_program: PCGprogram): TCGbool; cdecl; external CgLibrary;
-
-procedure cgCompileProgram(_program: PCGprogram); cdecl; external CgLibrary;
-function cgIsProgramCompiled(_program: PCGprogram): TCGbool; cdecl; external CgLibrary;
-function cgGetProgramString(prog: PCGprogram; pname: TCGenum): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetProgramProfile(prog: PCGprogram): TCGprofile; cdecl; external CgLibrary;
-
-(*** Parameter functions ***)
-
-function cgCreateParameter(ctx: PCGcontext; type_: TCGtype): PCGparameter; cdecl; external CgLibrary;
-function cgCreateParameterArray(ctx: PCGcontext; type_: TCGtype; length: Integer): PCGparameter; cdecl; external CgLibrary;
-function cgCreateParameterMultiDimArray(ctx: PCGcontext; type_: TCGtype; dim: Integer; const lengths: PInteger): PCGparameter; cdecl; external CgLibrary;
-procedure cgDestroyParameter(param: PCGparameter); cdecl; external CgLibrary;
-procedure cgConnectParameter(from, to_: PCGparameter); cdecl; external CgLibrary;
-procedure cgDisconnectParameter(param: PCGparameter); cdecl; external CgLibrary;
-function cgGetConnectedParameter(param: PCGparameter): PCGparameter; cdecl; external CgLibrary;
-
-function cgGetNumConnectedToParameters(param: PCGparameter): Integer; cdecl; external CgLibrary;
-function cgGetConnectedToParameter(param: PCGparameter; index: Integer): PCGparameter; cdecl; external CgLibrary;
-
-function cgGetNamedParameter(prog: PCGprogram; const name: PCharCG): PCGparameter; cdecl; external CgLibrary;
-function cgGetNamedProgramParameter(prog: PCGprogram; name_space: TCGenum; const name: PCharCG): PCGparameter; cdecl; external CgLibrary;
-
-function cgGetFirstParameter(prog: PCGprogram; name_space: TCGenum): PCGparameter; cdecl; external CgLibrary;
-{$IFNDEF CG_DEPRECATED_1_1_API}
-function cgGetNextParameter(current: PCGparameter): PCGparameter; cdecl; external CgLibrary;
-{$ENDIF}
-function cgGetFirstLeafParameter(prog: PCGprogram; name_space: TCGenum): PCGparameter; cdecl; external CgLibrary;
-{$IFNDEF CG_DEPRECATED_1_1_API}
-function cgGetNextLeafParameter(current: PCGparameter): PCGparameter; cdecl; external CgLibrary;
-{$ENDIF}
-
-function cgGetFirstStructParameter(param: PCGparameter): PCGparameter; cdecl; external CgLibrary;
-function cgGetNamedStructParameter(param: PCGparameter; const name: PCharCG): PCGparameter; cdecl; external CgLibrary;
-
-function cgGetFirstDependentParameter(param: PCGparameter): PCGparameter; cdecl; external CgLibrary;
-
-function cgGetArrayParameter(aparam: PCGparameter; index: Integer): PCGparameter; cdecl; external CgLibrary;
-function cgGetArrayDimension(param: PCGparameter): Integer; cdecl; external CgLibrary;
-function cgGetArrayType(param: PCGparameter): TCGtype; cdecl; external CgLibrary;
-function cgGetArraySize(param: PCGparameter; dimension: Integer): Integer; cdecl; external CgLibrary;
-procedure cgSetArraySize(param: PCGparameter; size: Integer); cdecl; external CgLibrary;
-procedure cgSetMultiDimArraySize(param: PCGparameter; const sizes: PInteger); cdecl; external CgLibrary;
-
-function cgGetParameterProgram(param: PCGparameter): PCGprogram; cdecl; external CgLibrary;
-function cgGetParameterContext(param: PCGparameter): PCGcontext; cdecl; external CgLibrary;
-function cgIsParameter(param: PCGparameter): TCGbool; cdecl; external CgLibrary;
-function cgGetParameterName(param: PCGparameter): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetParameterType(param: PCGparameter): TCGtype; cdecl; external CgLibrary;
-function cgGetParameterNamedType(param: PCGparameter): TCGtype; cdecl; external CgLibrary;
-function cgGetParameterSemantic(param: PCGparameter): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetParameterResource(param: PCGparameter): TCGresource; cdecl; external CgLibrary;
-function cgGetParameterBaseResource(param: PCGparameter): TCGresource; cdecl; external CgLibrary;
-function cgGetParameterResourceIndex(param: PCGparameter): LongWord; cdecl; external CgLibrary;
-function cgGetParameterVariability(param: PCGparameter): TCGenum; cdecl; external CgLibrary;
-function cgGetParameterDirection(param: PCGparameter): TCGenum; cdecl; external CgLibrary;
-function cgIsParameterReferenced(param: PCGparameter): TCGbool; cdecl; external CgLibrary;
-function cgGetParameterValues(param: PCGparameter; value_type: TCGenum;
-  out nvalues: Integer): PDouble{ const }; cdecl; external CgLibrary;
-function cgGetParameterOrdinalNumber(param: PCGparameter): Integer; cdecl; external CgLibrary;
-function cgIsParameterGlobal(param: PCGparameter): TCGbool; cdecl; external CgLibrary;
-function cgGetParameterIndex(param: PCGparameter): Integer; cdecl; external CgLibrary;
-
-procedure cgSetParameterVariability(param: PCGparameter; vary: TCGenum); cdecl; external CgLibrary;
-procedure cgSetParameterSemantic(param: PCGparameter; const semantic: PCharCG); cdecl; external CgLibrary;
-
-
-procedure cgSetParameter1f(param: PCGparameter; x: Single); cdecl; external CgLibrary;
-procedure cgSetParameter2f(param: PCGparameter; x, y: Single); cdecl; external CgLibrary;
-procedure cgSetParameter3f(param: PCGparameter; x, y, z: Single); cdecl; external CgLibrary;
-procedure cgSetParameter4f(param: PCGparameter; x, y, z, w: Single); cdecl; external CgLibrary;
-procedure cgSetParameter1d(param: PCGparameter; x: Double); cdecl; external CgLibrary;
-procedure cgSetParameter2d(param: PCGparameter; x, y: Double); cdecl; external CgLibrary;
-procedure cgSetParameter3d(param: PCGparameter; x, y, z: Double); cdecl; external CgLibrary;
-procedure cgSetParameter4d(param: PCGparameter; x, y, z, w: Double); cdecl; external CgLibrary;
-
-
-procedure cgSetParameter1fv(param: PCGparameter; const v: PSingle); cdecl; external CgLibrary;
-procedure cgSetParameter2fv(param: PCGparameter; const v: PSingle); cdecl; external CgLibrary;
-procedure cgSetParameter3fv(param: PCGparameter; const v: PSingle); cdecl; external CgLibrary;
-procedure cgSetParameter4fv(param: PCGparameter; const v: PSingle); cdecl; external CgLibrary;
-procedure cgSetParameter1dv(param: PCGparameter; const x: PDouble); cdecl; external CgLibrary;
-procedure cgSetParameter2dv(param: PCGparameter; const x: PDouble); cdecl; external CgLibrary;
-procedure cgSetParameter3dv(param: PCGparameter; const x: PDouble); cdecl; external CgLibrary;
-procedure cgSetParameter4dv(param: PCGparameter; const x: PDouble); cdecl; external CgLibrary;
-
-procedure cgSetMatrixParameterdr(param: PCGparameter; const matrix: PDouble); cdecl; external CgLibrary;
-procedure cgSetMatrixParameterfr(param: PCGparameter; const matrix: PSingle); cdecl; external CgLibrary;
-procedure cgSetMatrixParameterdc(param: PCGparameter; const matrix: PDouble); cdecl; external CgLibrary;
-procedure cgSetMatrixParameterfc(param: PCGparameter; const matrix: PSingle); cdecl; external CgLibrary;
-
-
-(*** Type Functions ***)
-
-function cgGetTypeString(_type: TCGtype): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetType(const type_string: PCharCG): TCGtype; cdecl; external CgLibrary;
-
-function cgGetNamedUserType(program_: CGprogram; const name: PCharCG): TCGtype; cdecl; external CgLibrary;
-
-function cgGetNumUserTypes(program_: CGprogram): Integer; cdecl; external CgLibrary;
-function cgGetUserType(program_: CGprogram; index: Integer): TCGtype; cdecl; external CgLibrary;
-
-function cgGetNumParentTypes(type_: TCGtype): Integer; cdecl; external CgLibrary;
-function cgGetParentType(type_: TCGtype; index: Integer): TCGtype; cdecl; external CgLibrary;
-
-function cgIsParentType(parent, child: TCGtype): TCGbool; cdecl; external CgLibrary;
-function cgIsInterfaceType(type_: TCGtype): TCGbool; cdecl; external CgLibrary;
-
-(*** Resource Functions ***)
-
-function cgGetResourceString(resource: TCGresource): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetResource(const resource_string: PCharCG): TCGresource; cdecl; external CgLibrary;
-
-{*** Enum Functions ***}
-
-function cgGetEnumString(en: TCGenum): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetEnum(const enum_string: PCharCG): TCGenum; cdecl; external CgLibrary;
-
-(*** Profile Functions ***)
-
-function cgGetProfileString(profile: TCGprofile): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetProfile(const profile_string: PCharCG): TCGprofile; cdecl; external CgLibrary;
-
-(*** Error Functions ***)
-
-function cgGetError: TCGerror; cdecl; external CgLibrary;
-function cgGetErrorString(error: TCGerror): PCharCG{ const }; cdecl; external CgLibrary;
-function cgGetLastErrorString(error: PCGerror): PCharCG{ const }; cdecl; external CgLibrary;
-procedure cgSetErrorCallback(func: TCGerrorCallbackFunc); cdecl; external CgLibrary;
-function cgGetErrorCallback: TCGerrorCallbackFunc; cdecl; external CgLibrary;
-
-
-{*** Misc Functions ***}
-
-function cgGetString(sname: TCGenum): PCharCG{ const }; cdecl; external CgLibrary;
-
-
-{*** Support for deprecated Cg 1.1 API ***}
-
-function cgGetNextParameter_depr1_1(current: PCGparameter): PCGparameter; cdecl; external CgLibrary;
-function cgGetNextLeafParameter_depr1_1(current: PCGparameter): PCGparameter; cdecl; external CgLibrary;
-
-{$IFDEF CG_DEPRECATED_1_1_API}
-
-function cgGetNextParameter(current: PCGparameter): PCGparameter; cdecl; external CgLibrary name 'cgGetNextParameter_depr1_1';
-function cgGetNextLeafParameter(current: PCGparameter): PCGparameter; cdecl; external CgLibrary name 'cgGetNextLeafParameter_depr1_1';
-
-{$ENDIF}
-
-implementation
-
-end.

+ 0 - 138
Source/FMX/CUDAx.DataAccess.pas

@@ -1,138 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit CUDAx.DataAccess;
-
-interface
-
-{$I GLX.Scene.inc}
-
-uses
-  System.SysUtils,
-  FMX.Dialogs,
-  GLX.Strings,
-  GLX.Utils;
-
-type
-
-  GCUDAHostElementAccess<TScalar> = class
-  public
-  const
-    ElementSize = SizeOf(TScalar);
-  type
-    TVector2 = array[0..1] of TScalar;
-    TVector3 = array[0..2] of TScalar;
-    TVector4 = array[0..3] of TScalar;
-  private
-    class procedure CheckElementSize(ACNum: Cardinal); inline;
-    class function GetScalar: TScalar;
-    class function GetVector2: TVector2;
-    class function GetVector3: TVector3;
-    class function GetVector4: TVector4;
-    class procedure SetScalar(const AValue: TScalar);
-    class procedure SetVector2(const AValue: TVector2);
-    class procedure SetVector3(const AValue: TVector3);
-    class procedure SetVector4(const AValue: TVector4);
-  public
-    property Scalar: TScalar read GetScalar write SetScalar;
-    property Vector2: TVector2 read GetVector2 write SetVector2;
-    property Vector3: TVector3 read GetVector3 write SetVector3;
-    property Vector4: TVector4 read GetVector4 write SetVector4;
-  end;
-
-  UByteElement = GCUDAHostElementAccess<Byte>;
-  ByteElement = GCUDAHostElementAccess<ShortInt>;
-  UShortElement= GCUDAHostElementAccess<Word>;
-  ShortElement = GCUDAHostElementAccess<SmallInt>;
-  UIntElement = GCUDAHostElementAccess<LongWord>;
-  IntElement = GCUDAHostElementAccess<LongInt>;
-  HalfElement = GCUDAHostElementAccess<THalfFloat>;
-  FloatElement = GCUDAHostElementAccess<Single>;
-  DoubleElement = GCUDAHostElementAccess<Double>;
-
-procedure SetElementAccessAddress(AValue: PByte; ASize: Cardinal);
-function GetElementAccessAddress: PByte;
-function GetElementAccessSize: Cardinal;
-
-//--------------------------------------------
-implementation
-//--------------------------------------------
-
-threadvar
-  vElementAccessAddress: PByte;
-  vElementAccessElementSize: Cardinal;
-
-function GetElementAccessAddress: PByte;
-begin
-  Result := vElementAccessAddress;
-end;
-
-function GetElementAccessSize: Cardinal;
-begin
-  Result := vElementAccessElementSize;
-end;
-
-procedure SetElementAccessAddress(AValue: PByte; ASize: Cardinal);
-begin
-  vElementAccessAddress := AValue;
-  vElementAccessElementSize := ASize;
-end;
-
-class procedure GCUDAHostElementAccess<TScalar>.CheckElementSize(ACNum: Cardinal);
-begin
-  if GetElementAccessSize <> ACNum * SizeOf(TScalar) then
-  begin
-    ShowMessage(strSizeMismatch);
-    Abort;
-  end;
-end;
-
-class function GCUDAHostElementAccess<TScalar>.GetScalar: TScalar;
-begin
-  CheckElementSize(1);
-  Move(GetElementAccessAddress^, Result, SizeOf(TScalar));
-end;
-
-class function GCUDAHostElementAccess<TScalar>.GetVector2: TVector2;
-begin
-  CheckElementSize(2);
-  Move(GetElementAccessAddress^, Result, 2*SizeOf(TScalar));
-end;
-
-class function GCUDAHostElementAccess<TScalar>.GetVector3: TVector3;
-begin
-  CheckElementSize(3);
-  Move(GetElementAccessAddress^, Result, 3*SizeOf(TScalar));
-end;
-
-class function GCUDAHostElementAccess<TScalar>.GetVector4: TVector4;
-begin
-  CheckElementSize(4);
-  Move(GetElementAccessAddress^, Result, 4*SizeOf(TScalar));
-end;
-
-class procedure GCUDAHostElementAccess<TScalar>.SetScalar(const AValue: TScalar);
-begin
-  CheckElementSize(1);
-  Move(AValue, GetElementAccessAddress^, SizeOf(TScalar));
-end;
-
-class procedure GCUDAHostElementAccess<TScalar>.SetVector2(const AValue: TVector2);
-begin
-  CheckElementSize(2);
-  Move(AValue, GetElementAccessAddress^, 2*SizeOf(TScalar));
-end;
-
-class procedure GCUDAHostElementAccess<TScalar>.SetVector3(const AValue: TVector3);
-begin
-  CheckElementSize(3);
-  Move(AValue, GetElementAccessAddress^, 3*SizeOf(TScalar));
-end;
-
-class procedure GCUDAHostElementAccess<TScalar>.SetVector4(const AValue: TVector4);
-begin
-  CheckElementSize(4);
-  Move(AValue, GetElementAccessAddress^, 4*SizeOf(TScalar));
-end;
-
-end.

+ 0 - 564
Source/FMX/CUDAx.FourierTransform.pas

@@ -1,564 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit CUDAx.FourierTransform;
-
-(*
- * Copyright 1993-2009 NVIDIA Corporation.  All rights reserved.
- *
- * NOTICE TO USER:
- *
- * This source code is subject to NVIDIA ownership rights under U.S. and
- * international Copyright laws.  Users and possessors of this source code
- * are hereby granted a nonexclusive, royalty-free license to use this code
- * in individual and commercial software.
- *
- * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
- * CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
- * IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
- * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
- * OF USE, DATA OR PROFITS,  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION,  ARISING OUT OF OR IN CONNECTION WITH THE USE
- * OR PERFORMANCE OF THIS SOURCE CODE.
- *
- * U.S. Government End Users.   This source code is a "commercial item" as
- * that term is defined at  48 C.F.R. 2.101 (OCT 1995), consisting  of
- * "commercial computer  software"  and "commercial computer software
- * documentation" as such terms are  used in 48 C.F.R. 12.212 (SEPT 1995)
- * and is provided to the U.S. Government only as a commercial end item.
- * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
- * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
- * source code with only those rights set forth herein.
- *
- * Any use of this source code in individual and commercial software must
- * include, in the user documentation and internal comments to the code,
- * the above Disclaimer and U.S. Government End Users Notice.
- *)
-
-interface
-
-{$I GLX.Scene.inc}
-
-uses
-  Winapi.Windows,
-  System.SysUtils,
-  FMX.Dialogs,
-
-  CUDAx.Import,
-  CUDAx.RunTime,
-  GLX.VectorTypes,
-  GLX.Strings;
-
-
-const
-{$IFDEF WIN32}
-  CUFFTDLLNAMES: array [0 .. 9] of string = (
-    'cufft32_42_9', 'cufft32_41_28',
-    'cufft32_40_10', 'cufft32_32_16', 'cufft32_31_4', 'cufft32_30_14',
-    'cufft32_30_9', 'cufft32_30_8', 'cufft32', 'cufft');
-{$ENDIF}
-
-{$IFDEF WIN64}
-  CUFFTDLLNAMES: array [0 .. 7] of string = (
-    'cufft64_42_9', 'cufft64_41_28',
-    'cufft64_40_10', 'cufft64_32_16', 'cufft64_31_4', 'cufft64_30_14',
-    'cufft64_30_9', 'cufft64_30_8');
-{$ENDIF}
-  { /// CUFFT API function return values }
-
-type
-  { /// CUFFT defines and supports the following data types }
-
-  { /// cufftHandle is a handle type used to store and access CUFFT plans. }
-  TcufftHandle = type Cardinal;
-
-  TcufftReal = Single;
-  PcufftReal = ^TcufftReal;
-
-  TcufftRealfloat = Single;
-  PcufftDoubleReal = ^TcufftDoubleReal;
-  TcufftDoubleReal = Double;
-
-  PcufftDoubleComplex = ^TcufftDoubleComplex;
-  TcufftDoubleComplex = TVector2d;
-
-  PcufftComplex = ^TcufftComplex;
-  TcufftComplex = TVector2f;
-
-  TcufftResult = type Byte;
-
-const
-  INVALID_CUFFT_HANDLE = $FFFFFFFF;
-
-  CUFFT_SUCCESS: TcufftResult = $00;
-  CUFFT_INVALID_PLAN: TcufftResult = $01;
-  CUFFT_ALLOC_FAILED: TcufftResult = $02;
-  CUFFT_INVALID_TYPE: TcufftResult = $03;
-  CUFFT_INVALID_VALUE: TcufftResult = $04;
-  CUFFT_INTERNAL_ERROR: TcufftResult = $05;
-  CUFFT_EXEC_FAILED: TcufftResult = $06;
-  CUFFT_SETUP_FAILED: TcufftResult = $07;
-  CUFFT_INVALID_SIZE: TcufftResult = $08;
-
-type
-  TcufftType = type Cardinal;
-
-  TcudaRoundMode = (cudaRoundNearest, cudaRoundZero, cudaRoundPosInf,
-    cudaRoundMinInf);
-
-  { /// CUFFT transform directions }
-const
-  CUFFT_FORWARD = -1; { // Forward FFT }
-  CUFFT_INVERSE = 1; { // Inverse FFT }
-
-  { /// CUFFT supports the following transform types }
-  CUFFT_R2C: TcufftType = $2A; // Real to Complex (interleaved)
-  CUFFT_C2R: TcufftType = $2C; // Complex (interleaved) to Real
-  CUFFT_C2C: TcufftType = $29; // Complex to Complex, interleaved
-  CUFFT_D2Z: TcufftType = $6A; // Double to Double-Complex
-  CUFFT_Z2D: TcufftType = $6C; // Double-Complex to Double
-  CUFFT_Z2Z: TcufftType = $69; // Double-Complex to Double-Complex
-
-  (*
-    Certain R2C and C2R transforms go much more slowly when FFTW memory
-    layout and behaviour is required. The default is "best performance",
-    which means not-compatible-with-fftw. Use the cufftSetCompatibilityMode
-    API to enable exact FFTW-like behaviour.
-
-    These flags can be ORed together to select precise FFTW compatibility
-    behaviour. The two levels presently supported are:
-
-    CUFFT_COMPATIBILITY_FFTW_PADDING
-    Inserts extra padding between packed in-place transforms for
-    batched transforms with power-of-2 size.
-
-    CUFFT_COMPATIBILITY_FFTW_C2R_ASYMMETRIC
-    Guarantees FFTW-compatible output for non-symmetric complex inputs
-    for transforms with power-of-2 size. This is only useful for
-    artificial (i.e. random) datasets as actual data will always be
-    symmetric if it has come from the real plane. If you don't
-    understand what this means, you probably don't have to use it.
-
-    CUFFT_COMPATIBILITY_FFTW
-    For convenience, enables all FFTW compatibility modes at once.
-  *)
-
-type
-
-  TcufftCompatibility = type Cardinal;
-
-const
-  CUFFT_COMPATIBILITY_NORMAL: TcufftCompatibility = $00; // The default value
-  CUFFT_COMPATIBILITY_FFTW_PADDING: TcufftCompatibility = $01;
-  CUFFT_COMPATIBILITY_FFTW_C2R_ASYMMETRIC: TcufftCompatibility = $02;
-  CUFFT_COMPATIBILITY_FFTW: TcufftCompatibility = $03;
-
-type
-
-  TcufftPlan1d = function(out plan: TcufftHandle; nx: Integer;
-    atype: TcufftType; batch: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftPlan2d = function(out plan: TcufftHandle; nx: Integer; ny: Integer;
-    atype: TcufftType): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftPlan3d = function(out plan: TcufftHandle; nx: Integer; ny: Integer;
-    nz: Integer; atype: TcufftType): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftDestroy = function(plan: TcufftHandle): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftPlanMany = function(out plan: TcufftHandle; rank: Integer;
-    var n: Integer; var inembed: Integer; istride, idist: Integer;
-    var onembed: Integer; ostride, odist: Integer; ctype: TcufftType;
-    batch: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftExecC2C = function(plan: TcufftHandle; idata: PcufftComplex;
-    odata: PcufftComplex; direction: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftExecR2C = function(plan: TcufftHandle; idata: PcufftReal;
-    odata: PcufftComplex): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftExecC2R = function(plan: TcufftHandle; idata: PcufftComplex;
-    odata: PcufftReal): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftExecZ2Z = function(plan: TcufftHandle; idata: PcufftDoubleComplex;
-    odata: PcufftDoubleComplex; direction: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftExecD2Z = function(plan: TcufftHandle; idata: PcufftDoubleReal;
-    odata: PcufftDoubleComplex): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftExecZ2D = function(plan: TcufftHandle; idata: PcufftDoubleComplex;
-    odata: PcufftDoubleReal): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftSetStream = function(p: TcufftHandle; stream: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  TcufftSetCompatibilityMode = function(plan: TcufftHandle;
-    mode: TcufftCompatibility): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-
-var
-  cufftPlan1d: TcufftPlan1d;
-  cufftPlan2d: TcufftPlan2d;
-  cufftPlan3d: TcufftPlan3d;
-  cufftDestroy: TcufftDestroy;
-  cufftPlanMany: TcufftPlanMany;
-  cufftExecC2C: TcufftExecC2C;
-  cufftExecR2C: TcufftExecR2C;
-  cufftExecC2R: TcufftExecC2R;
-  cufftExecZ2Z: TcufftExecZ2Z;
-  cufftExecD2Z: TcufftExecD2Z;
-  cufftExecZ2D: TcufftExecZ2D;
-  cufftSetStream: TcufftSetStream;
-  cufftSetCompatibilityMode: TcufftSetCompatibilityMode;
-
-function InitCUFFT: Boolean;
-procedure CloseCUFFT;
-function InitCUFFTFromLibrary(const LibName: WideString): Boolean;
-function IsCUFFTInitialized: Boolean;
-function Get_CUDA_FFT_Error_String(AError: TcufftResult): string;
-
-implementation
-
-const
-  cufftPlan1dName = 'cufftPlan1d';
-  cufftPlan2dName = 'cufftPlan2d';
-  cufftPlan3dName = 'cufftPlan3d';
-  cufftDestroyName = 'cufftDestroy';
-  cufftPlanManyName = 'cufftPlanMany';
-  cufftExecC2CName = 'cufftExecC2C';
-  cufftExecR2CName = 'cufftExecR2C';
-  cufftExecC2RName = 'cufftExecC2R';
-  cufftExecZ2ZName = 'cufftExecZ2Z';
-  cufftExecD2ZName = 'cufftExecD2Z';
-  cufftExecZ2DName = 'cufftExecZ2D';
-  cufftSetStreamName = 'cufftSetStream';
-  cufftSetCompatibilityModeName = 'cufftSetCompatibilityMode';
-
-const
-  INVALID_MODULEHANDLE = 0;
-
-var
-{$IFDEF MSWINDOWS}
-  CUFFTHandle: HINST = INVALID_MODULEHANDLE;
-{$ENDIF}
-{$IFDEF LINUX}
-  CUFFTHandle: TLibHandle = INVALID_MODULEHANDLE;
-{$ENDIF}
-{$IFDEF CUDA_DEBUG_MODE}
-
-var
-  cufftPlan1d_: TcufftPlan1d;
-  cufftPlan2d_: TcufftPlan2d;
-  cufftPlan3d_: TcufftPlan3d;
-  cufftDestroy_: TcufftDestroy;
-  cufftPlanMany_: TcufftPlanMany;
-  cufftExecC2C_: TcufftExecC2C;
-  cufftExecR2C_: TcufftExecR2C;
-  cufftExecC2R_: TcufftExecC2R;
-  cufftExecZ2Z_: TcufftExecZ2Z;
-  cufftExecD2Z_: TcufftExecD2Z;
-  cufftExecZ2D_: TcufftExecZ2D;
-  cufftSetStream_: TcufftSetStream;
-  cufftSetCompatibilityMode_: TcufftSetCompatibilityMode;
-
-function cufftPlan1dShell(out plan: TcufftHandle; nx: Integer;
-  atype: TcufftType; batch: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftPlan1d_(plan, nx, atype, batch);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftPlan1dName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftPlan2dShell(out plan: TcufftHandle; nx: Integer; ny: Integer;
-  atype: TcufftType): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftPlan2d_(plan, nx, ny, atype);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftPlan2dName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftPlan3dShell(out plan: TcufftHandle; nx: Integer; ny: Integer;
-  nz: Integer; atype: TcufftType): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftPlan3d_(plan, nx, ny, nz, atype);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftPlan3dName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftDestroyShell(plan: TcufftHandle): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftDestroy_(plan);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftDestroyName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftPlanManyShell(out plan: TcufftHandle; rank: Integer;
-  var n: Integer; var inembed: Integer; istride, idist: Integer;
-  var onembed: Integer; ostride, odist: Integer; ctype: TcufftType;
-  batch: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftPlanMany_(plan, rank, n, inembed, istride, idist, onembed,
-    ostride, odist, ctype, batch);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftPlanManyName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftExecC2CShell(plan: TcufftHandle; idata: PcufftComplex;
-  odata: PcufftComplex; direction: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftExecC2C_(plan, idata, odata, direction);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftExecC2CName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftExecR2CShell(plan: TcufftHandle; idata: PcufftReal;
-  odata: PcufftComplex): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftExecR2C_(plan, idata, odata);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftExecR2CName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftExecC2RShell(plan: TcufftHandle; idata: PcufftComplex;
-  odata: PcufftReal): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftExecC2R_(plan, idata, odata);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftExecC2RName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftExecZ2ZShell(plan: TcufftHandle; idata: PcufftDoubleComplex;
-  odata: PcufftDoubleComplex; direction: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftExecZ2Z_(plan, idata, odata, direction);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftExecZ2ZName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftExecD2ZShell(plan: TcufftHandle; idata: PcufftDoubleReal;
-  odata: PcufftDoubleComplex): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftExecD2Z_(plan, idata, odata);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftExecD2ZName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftExecZ2DShell(plan: TcufftHandle; idata: PcufftDoubleComplex;
-  odata: PcufftDoubleReal): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftExecZ2D_(plan, idata, odata);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftExecZ2DName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftSetStreamShell(p: TcufftHandle; stream: Integer): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftSetStream_(p, stream);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftSetStreamName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-function cufftSetCompatibilityModeShell(plan: TcufftHandle;
-  mode: TcufftCompatibility): TcufftResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-begin
-  Result := cufftSetCompatibilityMode_(plan, mode);
-  if Result <> CUFFT_SUCCESS then
-    ShowMessage(Format(strFFTFuncRetErr, [cufftSetCompatibilityModeName,
-      Get_CUDA_FFT_Error_String(Result)]));
-end;
-
-{$ENDIF CUDA_DEBUG_MODE}
-
-function CUFFTGetProcAddress(ProcName: PAnsiChar): Pointer;
-begin
-  result := GetProcAddress(CUFFTHandle, ProcName);
-end;
-
-function InitCUFFT: Boolean;
-var
-  I: Integer;
-begin
-  Result := True;
-  if CUFFTHandle = INVALID_MODULEHANDLE then
-  begin
-    for I := 0 to High(CUFFTDLLNAMES) do
-    begin
-      if InitCUFFTFromLibrary(CUFFTDLLNAMES[I] + '.dll') then
-        Exit;
-    end;
-    Result := False;
-  end;
-end;
-
-procedure CloseCUFFT;
-begin
-  if CUFFTHandle <> INVALID_MODULEHANDLE then
-  begin
-    FreeLibrary(Cardinal(CUFFTHandle));
-    CUFFTHandle := INVALID_MODULEHANDLE;
-  end;
-end;
-
-function InitCUFFTFromLibrary(const LibName: WideString): Boolean;
-begin
-  CloseCUFFT;
-  CUFFTHandle := GetModuleHandleW(PWideChar(LibName));
-  if CUFFTHandle = INVALID_MODULEHANDLE then
-    CUFFTHandle := LoadLibraryW(PWideChar(LibName));
-  if CUFFTHandle = INVALID_MODULEHANDLE then
-    Exit(False);
-{$IFNDEF CUDA_DEBUG_MODE}
-  cufftPlan1d := CUFFTGetProcAddress(cufftPlan1dName);
-  cufftPlan2d := CUFFTGetProcAddress(cufftPlan2dName);
-  cufftPlan3d := CUFFTGetProcAddress(cufftPlan3dName);
-  cufftDestroy := CUFFTGetProcAddress(cufftDestroyName);
-  cufftPlanMany := CUFFTGetProcAddress(cufftPlanManyName);
-  cufftExecC2C := CUFFTGetProcAddress(cufftExecC2CName);
-  cufftExecR2C := CUFFTGetProcAddress(cufftExecR2CName);
-  cufftExecC2R := CUFFTGetProcAddress(cufftExecC2RName);
-  cufftExecZ2Z := CUFFTGetProcAddress(cufftExecZ2ZName);
-  cufftExecD2Z := CUFFTGetProcAddress(cufftExecD2ZName);
-  cufftExecZ2D := CUFFTGetProcAddress(cufftExecZ2DName);
-  cufftSetStream := CUFFTGetProcAddress(cufftSetStreamName);
-  cufftSetCompatibilityMode := CUFFTGetProcAddress(cufftSetCompatibilityModeName);
-{$ELSE}
-  cufftPlan1d_ := CUFFTGetProcAddress(cufftPlan1dName);
-  cufftPlan1d := cufftPlan1dShell;
-  cufftPlan2d_ := CUFFTGetProcAddress(cufftPlan2dName);
-  cufftPlan2d := cufftPlan2dShell;
-  cufftPlan3d_ := CUFFTGetProcAddress(cufftPlan3dName);
-  cufftPlan3d := cufftPlan3dShell;
-  cufftDestroy_ := CUFFTGetProcAddress(cufftDestroyName);
-  cufftDestroy := cufftDestroyShell;
-  cufftPlanMany_ := CUFFTGetProcAddress(cufftPlanManyName);
-  cufftPlanMany := cufftPlanManyShell;
-  cufftExecC2C_ := CUFFTGetProcAddress(cufftExecC2CName);
-  cufftExecC2C := cufftExecC2CShell;
-  cufftExecR2C_ := CUFFTGetProcAddress(cufftExecR2CName);
-  cufftExecR2C := cufftExecR2CShell;
-  cufftExecC2R_ := CUFFTGetProcAddress(cufftExecC2RName);
-  cufftExecC2R := cufftExecC2RShell;
-  cufftExecZ2Z_ := CUFFTGetProcAddress(cufftExecZ2ZName);
-  cufftExecZ2Z := cufftExecZ2ZShell;
-  cufftExecD2Z_ := CUFFTGetProcAddress(cufftExecD2ZName);
-  cufftExecD2Z := cufftExecD2ZShell;
-  cufftExecZ2D_ := CUFFTGetProcAddress(cufftExecZ2DName);
-  cufftExecZ2D := cufftExecZ2DShell;
-  cufftSetStream_ := CUFFTGetProcAddress(cufftSetStreamName);
-  cufftSetStream := cufftSetStreamShell;
-  cufftSetCompatibilityMode_ := CUFFTGetProcAddress(cufftSetCompatibilityModeName);
-  cufftSetCompatibilityMode := cufftSetCompatibilityModeShell;
-{$ENDIF}
-  ShowMessage(Format('%s loaded...', [LibName]));
-  Result := True;
-end;
-
-function IsCUFFTInitialized: Boolean;
-begin
-  result := (CUFFTHandle <> INVALID_MODULEHANDLE);
-end;
-
-function Get_CUDA_FFT_Error_String(AError: TcufftResult): string;
-begin
-  if AError = CUFFT_SUCCESS then
-    result := 'CUFFT operation is successful.'
-  else if AError = CUFFT_INVALID_PLAN then
-    result := 'CUFFT is passed an invalid plan handle.'
-  else if AError = CUFFT_ALLOC_FAILED then
-    result := 'CUFFT failed to allocate GPU memory.'
-  else if AError = CUFFT_INVALID_TYPE then
-    result := 'The user requests an unsupported type.'
-  else if AError = CUFFT_INVALID_VALUE then
-    result := 'The user specifies a bad memory pointer.'
-  else if AError = CUFFT_INTERNAL_ERROR then
-    result := 'Used for all internal driver errors.'
-  else if AError = CUFFT_EXEC_FAILED then
-    result := 'CUFFT failed to execute an FFT on the GPU.'
-  else if AError = CUFFT_SETUP_FAILED then
-    result := 'The CUFFT library failed to initialize.'
-  else if AError = CUFFT_INVALID_SIZE then
-    result := 'The user specifies an unsupported FFT size.'
-  else
-    result := 'Unknown error.'
-end;
-
-end.

+ 0 - 2876
Source/FMX/CUDAx.Import.pas

@@ -1,2876 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit CUDAx.Import;
-
-(*
- * Copyright 1993-2020 NVIDIA Corporation.  All rights reserved.
- *
- * NOTICE TO USER:
- *
- * This source code is subject to NVIDIA ownership rights under U.S. and
- * international Copyright laws.  Users and possessors of this source code
- * are hereby granted a nonexclusive, royalty-free license to use this code
- * in individual and commercial software.
- *
- * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
- * CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
- * IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
- * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
- * OF USE, DATA OR PROFITS,  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION,  ARISING OUT OF OR IN CONNECTION WITH THE USE
- * OR PERFORMANCE OF THIS SOURCE CODE.
- *
- * U.S. Government End Users.   This source code is a "commercial item" as
- * that term is defined at  48 C.F.R. 2.101 (OCT 1995), consisting  of
- * "commercial computer  software"  and "commercial computer software
- * documentation" as such terms are  used in 48 C.F.R. 12.212 (SEPT 1995)
- * and is provided to the U.S. Government only as a commercial end item.
- * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
- * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
- * source code with only those rights set forth herein.
- *
- * Any use of this source code in individual and commercial software must
- * include, in the user documentation and internal comments to the code,
- * the above Disclaimer and U.S. Government End Users Notice.
- *)
-
-
-interface
-
-{.$DEFINE CUDA_DEBUG_MODE}
-
-uses
-  Winapi.Windows,
-  System.SysUtils,
-  FMX.Dialogs;
-
-const
-  CUDAAPIDLL = 'nvcuda.dll';
-
-type
-  // CUDA device pointer
-  TCUdeviceptr = Pointer;
-
-  // CUDA device
-  TCUdevice = Integer;
-
-  // CUDA context
-  PCUcontext = ^TCUcontext;
-  TCUcontext = record
-  end;
-
-  // CUDA module
-  PCUmodule = ^TCUmodule;
-  TCUmodule = record
-  end;
-
-  // CUDA function
-  PCUfunction = ^TCUfunction;
-  TCUfunction = record
-  end;
-
-  // CUDA array
-  PCUarray = ^TCUarray;
-  TCUarray = record
-  end;
-
-  // CUDA texture reference
-  PCUtexref = ^TCUtexref;
-  TCUtexref = record
-  end;
-
-  // CUDA event
-  PCUevent = ^TCUevent;
-  TCUevent = record
-  end;
-
-  // CUDA stream
-  PCUstream = ^TCUstream;
-  TCUstream = record
-  end;
-
-  // CUDA graphics interop resource
-  PPCUgraphicsResource = ^PCUgraphicsResource;
-  PCUgraphicsResource = ^TCUgraphicsResource;
-  TCUgraphicsResource = record
-  end;
-
-  // Context creation flags
-  TCUctx_flags = (
-    // Automatic scheduling
-    CU_CTX_SCHED_AUTO = 0,
-    // Set spin as default scheduling
-    CU_CTX_SCHED_SPIN = 1,
-    // Set yield as default scheduling
-    CU_CTX_SCHED_YIELD = 2,
-    CU_CTX_SCHED_MASK = 3, 
-	// Use blocking synchronization
-	CU_CTX_BLOCKING_SYNC = 4,
-    // Support mapped pinned allocations
-    CU_CTX_MAP_HOST = 8,
-    CU_CTX_FLAGS_MASK = 15);
-
-  // Event creation flags
-  TCUevent_flags = (
-    // Default event flag
-    CU_EVENT_DEFAULT = 0,
-    // Event uses blocking synchronization
-    CU_EVENT_BLOCKING_SYNC = 1
-    );
-
-  // Array formats
-  TCUarray_format = (
-    // Unsigned 8-bit integers
-    CU_AD_FORMAT_UNSIGNED_INT8 = $01,
-    // Unsigned 16-bit integers
-    CU_AD_FORMAT_UNSIGNED_INT16 = $02,
-    // Unsigned 32-bit integers
-    CU_AD_FORMAT_UNSIGNED_INT32 = $03,
-    // Signed 8-bit integers
-    CU_AD_FORMAT_SIGNED_INT8 = $08,
-    // Signed 16-bit integers   
-    CU_AD_FORMAT_SIGNED_INT16 = $09,
-    // Signed 32-bit integers
-    CU_AD_FORMAT_SIGNED_INT32 = $0A,
-    // 16-bit floating point
-    CU_AD_FORMAT_HALF = $10,
-    // 32-bit floating point
-    CU_AD_FORMAT_FLOAT = $20
-    );
-
-  // Texture reference addressing modes
-  TCUaddress_mode = (
-    // Wrapping address mode
-    CU_TR_ADDRESS_MODE_WRAP = 0,
-    // Clamp to edge address mode
-    CU_TR_ADDRESS_MODE_CLAMP = 1,
-    // Mirror address mode
-    CU_TR_ADDRESS_MODE_MIRROR = 2
-    );
-
-  // Texture reference filtering modes
-  TCUfilter_mode = (
-    // Point filter mode
-	CU_TR_FILTER_MODE_POINT = 0,
-    // Linear filter mode
-    CU_TR_FILTER_MODE_LINEAR = 1
-    );
-
-  // Device properties
-  TCUdevice_attribute = (
-    // Maximum number of threads per block
-    CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 1,
-    // Maximum block dimension X
-    CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_X = 2,
-    // Maximum block dimension Y
-    CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Y = 3,
-    // Maximum block dimension Z
-    CU_DEVICE_ATTRIBUTE_MAX_BLOCK_DIM_Z = 4,
-    // Maximum grid dimension X
-    CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_X = 5,
-    // Maximum grid dimension Y
-    CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Y = 6,
-    // Maximum grid dimension Z
-    CU_DEVICE_ATTRIBUTE_MAX_GRID_DIM_Z = 7,
-    // Maximum shared memory available per block in bytes
-    CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK = 8,
-    // Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_SHARED_MEMORY_PER_BLOCK
-    CU_DEVICE_ATTRIBUTE_SHARED_MEMORY_PER_BLOCK = 8,
-    // Memory available on device for __constant__ variables in a CUDA C kernel in bytes
-    CU_DEVICE_ATTRIBUTE_TOTAL_CONSTANT_MEMORY = 9,
-    // Warp size in threads
-    CU_DEVICE_ATTRIBUTE_WARP_SIZE = 10,
-    // Maximum pitch in bytes allowed by memory copies
-    CU_DEVICE_ATTRIBUTE_MAX_PITCH = 11,
-    // Maximum number of 32-bit registers available per block
-    CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK = 12,
-    // Deprecated, use CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_BLOCK
-    CU_DEVICE_ATTRIBUTE_REGISTERS_PER_BLOCK = 12,
-    // Peak clock frequency in kilohertz
-    CU_DEVICE_ATTRIBUTE_CLOCK_RATE = 13,
-    // Alignment requirement for textures
-    CU_DEVICE_ATTRIBUTE_TEXTURE_ALIGNMENT = 14,
-    // Device can possibly copy memory and execute a kernel concurrently
-    CU_DEVICE_ATTRIBUTE_GPU_OVERLAP = 15,
-    // Number of multiprocessors on device    
-    CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT = 16,
-    // Specifies whether there is a run time limit on kernels
-    CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT = 17,
-    // Device is integrated with host memory
-    CU_DEVICE_ATTRIBUTE_INTEGRATED = 18,
-    // Device can map host memory into CUDA address space
-    CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY = 19,
-    // Compute mode (See ::CUcomputemode for details)
-    CU_DEVICE_ATTRIBUTE_COMPUTE_MODE = 20
-    );
-
-  (* *
-    * CUDA Limits
-  *)
-  TcudaLimit = (
-    // GPU thread stack size
-	cudaLimitStackSize = $00,
-    // GPU printf FIFO size
-    cudaLimitPrintfFifoSize = $01
-    );
-
-  // Legacy device properties
-  TCUdevprop = record
-    // Maximum number of threads per block
-    maxThreadsPerBlock: Integer;
-    // Maximum size of each dimension of a block
-	maxThreadsDim: array [0 .. 2] of Integer;
-    // Maximum size of each dimension of a grid
-    maxGridSize: array [0 .. 2] of Integer;
-    // Shared memory available per block in bytes
-    sharedMemPerBlock: Integer;
-    // Constant memory available on device in bytes
-    totalConstantMemory: Integer;
-    // Warp size in threads
-    SIMDWidth: Integer;
-    // Maximum pitch in bytes allowed by memory copies
-    memPitch: Integer;
-    // 32-bit registers available per block
-    regsPerBlock: Integer;
-    // Clock frequency in kilohertz
-    clockRate: Integer;
-    // Alignment requirement for textures
-    textureAlign: Integer;
-  end;
-
-  // Function properties
-  TCUfunction_attribute = (
-
-    (* The number of threads beyond which a launch of the function would fail.
-     * This number depends on both the function and the device on which the
-     * function is currently loaded. *)
-    CU_FUNC_ATTRIBUTE_MAX_THREADS_PER_BLOCK = 0,
-
-    (* The size in bytes of statically-allocated shared memory required by
-     * this function. This does not include dynamically-allocated shared
-     * memory requested by the user at runtime. *)
-    CU_FUNC_ATTRIBUTE_SHARED_SIZE_BYTES = 1,
-
-    { * The size in bytes of user-allocated constant memory required by this
-      * function. }
-    CU_FUNC_ATTRIBUTE_CONST_SIZE_BYTES = 2,
-
-    { * The size in bytes of thread local memory used by this function. }
-    CU_FUNC_ATTRIBUTE_LOCAL_SIZE_BYTES = 3,
-
-    { * The number of registers used by each thread of this function. }
-    CU_FUNC_ATTRIBUTE_NUM_REGS = 4,
-
-    CU_FUNC_ATTRIBUTE_MAX);
-
-  // Memory types
-  TCUmemorytype = (
-    // Host memory
-	CU_MEMORYTYPE_HOST = $01,
-    // Device memory
-    CU_MEMORYTYPE_DEVICE = $02,
-    // Array memory
-    CU_MEMORYTYPE_ARRAY = $03
-    );
-
-  // Compute Modes
-  TCUcomputemode = (
-    // Default compute mode (Multiple contexts allowed per device)
-	CU_COMPUTEMODE_DEFAULT = 0,
-    // Compute-exclusive mode (Only one context can be present on this device at a time)
-    CU_COMPUTEMODE_EXCLUSIVE = 1,
-    // Compute-prohibited mode (No contexts can be created on this device at this time)
-    CU_COMPUTEMODE_PROHIBITED = 2
-    );
-
-  // Online compiler options
-  TCUjit_option = (
-    { * Max number of registers that a thread may use. }
-
-    CU_JIT_MAX_REGISTERS = 0,
-
-    { * IN: Specifies minimum number of threads per block to target compilation
-      * for\n
-      * OUT: Returns the number of threads the compiler actually targeted.
-      * This restricts the resource utilization fo the compiler (e.g. max
-      * registers) such that a block with the given number of threads should be
-      * able to launch based on register limitations. Note, this option does not
-      * currently take into account any other resource limitations, such as
-      * shared memory utilization. }
-    CU_JIT_THREADS_PER_BLOCK,
-
-    { * Returns a float value in the option of the wall clock time, in
-      * milliseconds, spent creating the cubin }
-    CU_JIT_WALL_TIME,
-
-    { * Pointer to a buffer in which to print any log messsages from PTXAS
-      * that are informational in nature }
-    CU_JIT_INFO_LOG_BUFFER,
-
-    { * IN: Log buffer size in bytes.  Log messages will be capped at this size
-      * (including null terminator)\n
-      * OUT: Amount of log buffer filled with messages }
-    CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES,
-
-    { * Pointer to a buffer in which to print any log messages from PTXAS that
-      * reflect errors }
-    CU_JIT_ERROR_LOG_BUFFER,
-
-    { * IN: Log buffer size in bytes.  Log messages will be capped at this size
-      * (including null terminator)\n
-      * OUT: Amount of log buffer filled with messages }
-    CU_JIT_ERROR_LOG_BUFFER_SIZE_BYTES,
-
-    { * Level of optimizations to apply to generated code (0 - 4), with 4
-      * being the default and highest level of optimizations. }
-    CU_JIT_OPTIMIZATION_LEVEL,
-
-    { * No option value required. Determines the target based on the current
-      * attached context (default) }
-    CU_JIT_TARGET_FROM_CUCONTEXT,
-
-    { * Target is chosen based on supplied CUjit_target_enum. }
-    CU_JIT_TARGET,
-
-    { * Specifies choice of fallback strategy if matching cubin is not found.
-      * Choice is based on supplied CUjit_fallback_enum. }
-    CU_JIT_FALLBACK_STRATEGY );
-
-  // Online compilation targets
-  TCUjit_target = (
-    // Compute device class 1.0
-    CU_TARGET_COMPUTE_10 = 0,
-	// Compute device class 1.1
-    CU_TARGET_COMPUTE_11,
-    // Compute device class 1.2
-    CU_TARGET_COMPUTE_12,
-    // Compute device class 1.3
-    CU_TARGET_COMPUTE_13
-    );
-
-  // Cubin matching fallback strategies
-  TCUjit_fallback = (
-    // ** Prefer to compile ptx */
-    CU_PREFER_PTX = 0,
-    // ** Prefer to fall back to compatible binary code */
-    CU_PREFER_BINARY);
-
-  // Flags to register a graphics resource
-  TCUgraphicsRegisterFlags = (CU_GRAPHICS_REGISTER_FLAGS_NONE = $00000000);
-
-  // Flags for mapping and unmapping interop resources
-  TCUgraphicsMapResourceFlags =
-    (CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE = $00000000,
-    CU_GRAPHICS_MAP_RESOURCE_FLAGS_READ_ONLY = $00000001,
-    CU_GRAPHICS_MAP_RESOURCE_FLAGS_WRITE_DISCARD = $00000002);
-
-  // Array indices for cube faces
-  TCUarray_cubemap_face = (
-    // Positive X face of cubemap
-	CU_CUBEMAP_FACE_POSITIVE_X = $00000000,
-    // Negative X face of cubemap
-    CU_CUBEMAP_FACE_NEGATIVE_X = $00000001,
-    // Positive Y face of cubemap
-    CU_CUBEMAP_FACE_POSITIVE_Y = $00000002,
-    // Negative Y face of cubemap
-    CU_CUBEMAP_FACE_NEGATIVE_Y = $00000003,
-    // Positive Z face of cubemap
-    CU_CUBEMAP_FACE_POSITIVE_Z = $00000004,
-    // Negative Z face of cubemap
-    CU_CUBEMAP_FACE_NEGATIVE_Z = $00000005
-    );
-
-  (*
-    * CUDA function attributes
-  *)
-
-  TcudaFuncAttributes = record
-    // Size of shared memory in bytes
-    sharedSizeBytes: NativeUInt;
-	// Size of constant memory in bytes
-    constSizeBytes: NativeUInt;
-    // Size of local memory in bytes
-    localSizeBytes: NativeUInt;
-    // Maximum number of threads per block
-    maxThreadsPerBlock: Integer;
-    // Number of registers used
-    numRegs: Integer;
-    
-    (* \brief PTX virtual architecture version for which the function was
-      *  compiled. This value is the major PTX version * 10 + the minor PTX
-      *  version, so a PTX version 1.3 function would return the value 13.
-      *  For device emulation kernels, this is set to 9999. *)
-    ptxVersion: Integer;
-    (* * \brief Binary architecture version for which the function was compiled.
-      *  This value is the major binary version * 10 + the minor binary version,
-      *  so a binary version 1.3 function would return the value 13.
-      *  For device emulation kernels, this is set to 9999. *)
-    binaryVersion: Integer;
-    __cudaReserved: array [0 .. 5] of Integer;
-  end;
-
-  (* *
-    * CUDA function cache configurations
-  *)
-
-  TcudaFuncCache = (
-    // Default function cache configuration, no preference
-	cudaFuncCachePreferNone = 0,
-    // Prefer larger shared memory and smaller L1 cache
-    cudaFuncCachePreferShared = 1,
-    // Prefer larger L1 cache and smaller shared memory
-    cudaFuncCachePreferL1 = 2
-    );
-
-  // ************************************
-  // **
-  // **    Error codes
-  // **
-  // ***********************************/
-
-  // Error codes
-
-  TCUresult = type Cardinal;
-
-const
-  CUDA_SUCCESS: TCUresult = 0;          /// < No errors
-  CUDA_ERROR_INVALID_VALUE = 1;         /// < Invalid value
-  CUDA_ERROR_OUT_OF_MEMORY = 2;         /// < Out of memory
-  CUDA_ERROR_NOT_INITIALIZED = 3;       /// < Driver not initialized
-  CUDA_ERROR_DEINITIALIZED = 4;         /// < Driver deinitialized
-
-  CUDA_ERROR_NO_DEVICE = 100;           /// < No CUDA-capable device available
-  CUDA_ERROR_INVALID_DEVICE = 101;      /// < Invalid device
-
-  CUDA_ERROR_INVALID_IMAGE = 200;       /// < Invalid kernel image
-  CUDA_ERROR_INVALID_CONTEXT = 201;     /// < Invalid context
-  CUDA_ERROR_CONTEXT_ALREADY_CURRENT = 202;  /// < Context already current
-  CUDA_ERROR_MAP_FAILED = 205;          /// < Map failed
-  CUDA_ERROR_UNMAP_FAILED = 206;        /// < Unmap failed
-  CUDA_ERROR_ARRAY_IS_MAPPED = 207;     /// < Array is mapped
-  CUDA_ERROR_ALREADY_MAPPED = 208;      /// < Already mapped
-  CUDA_ERROR_NO_BINARY_FOR_GPU = 209;   /// < No binary for GPU
-  CUDA_ERROR_ALREADY_ACQUIRED = 210;    /// < Already acquired
-  CUDA_ERROR_NOT_MAPPED = 211;          /// < Not mapped
-  CUDA_ERROR_NOT_MAPPED_AS_ARRAY = 212;    /// < Mapped resource not available for access as an array
-  CUDA_ERROR_NOT_MAPPED_AS_POINTER = 213;  /// < Mapped resource not available for access as a pointer
-
-  CUDA_ERROR_INVALID_SOURCE = 300;       /// < Invalid source
-  CUDA_ERROR_FILE_NOT_FOUND = 301;       /// < File not found
-
-  CUDA_ERROR_INVALID_HANDLE = 400;       /// < Invalid handle
-
-  CUDA_ERROR_NOT_FOUND = 500;            /// < Not found
-
-  CUDA_ERROR_NOT_READY = 600;            /// < CUDA not ready
-
-  CUDA_ERROR_LAUNCH_FAILED = 700;           /// < Launch failed
-  CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES = 701; /// < Launch exceeded resources
-  CUDA_ERROR_LAUNCH_TIMEOUT = 702;          /// < Launch exceeded timeout
-  CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING = 703; /// < Launch with incompatible texturing
-
-  CUDA_ERROR_POINTER_IS_64BIT = 800;        /// < Attempted to retrieve 64-bit pointer via 32-bit API function
-  CUDA_ERROR_SIZE_IS_64BIT = 801;           /// < Attempted to retrieve 64-bit size via 32-bit API function
-
-  CUDA_ERROR_UNKNOWN = 999;                 /// < Unknown error
-
-const
-
-  { * If set, host memory is portable between CUDA contexts.
-    * Flag for ::cuMemHostAlloc() }
-  CU_MEMHOSTALLOC_PORTABLE = $01;
-
-  { * If set, host memory is mapped into CUDA address space and
-    * ::cuMemHostGetDevicePointer() may be called on the host pointer.
-    * Flag for ::cuMemHostAlloc() }
-  CU_MEMHOSTALLOC_DEVICEMAP = $02;
-
-  { * If set, host memory is allocated as write-combined - fast to write,
-    * faster to DMA, slow to read except via SSE4 streaming load instruction
-    * (MOVNTDQA).
-    * Flag for ::cuMemHostAlloc() }
-  CU_MEMHOSTALLOC_WRITECOMBINED = $04;
-
-  // 2D memory copy parameters
-type
-
-  PCUDA_MEMCPY2D = ^TCUDA_MEMCPY2D;
-
-  TCUDA_MEMCPY2D = record
-    srcXInBytes,       /// < Source X in bytes
-    srcY: Cardinal;    /// < Source Y
-
-    srcMemoryType: TCUmemorytype;  /// < Source memory type (host, device, array)
-    srcHost: Pointer;              /// < Source host pointer
-    srcDevice: TCUdeviceptr;       /// < Source device pointer
-    srcArray: PCUarray;            /// < Source array reference
-    srcPitch: Cardinal;            /// < Source pitch (ignored when src is array)
-
-    dstXInBytes,                   /// < Destination X in bytes
-    dstY: Cardinal;                /// < Destination Y
-    dstMemoryType: TCUmemorytype;  /// < Destination memory type (host, device, array)
-    dstHost: Pointer;              /// < Destination host pointer
-    dstDevice: TCUdeviceptr;       /// < Destination device pointer
-    dstArray: PCUarray;            /// < Destination array reference
-    dstPitch: Cardinal;            /// < Destination pitch (ignored when dst is array)
-
-    WidthInBytes: Cardinal;        /// < Width of 2D memory copy in bytes
-    Height: Cardinal;              /// < Height of 2D memory copy
-  end;
-
-  // 3D memory copy parameters
-  TCUDA_MEMCPY3D = record
-    srcXInBytes,                        /// < Source X in bytes
-    srcY,                               /// < Source Y
-    srcZ: Cardinal;                     /// < Source Z
-    srcLOD: Cardinal;                   /// < Source LOD
-    srcMemoryType: TCUmemorytype;       /// < Source memory type (host, device, array)
-    srcHost: Pointer;                   /// < Source host pointer
-    srcDevice: TCUdeviceptr;            /// < Source device pointer
-    srcArray: PCUarray;                 /// < Source array reference
-    reserved0: Pointer;                 /// < Must be NULL
-    srcPitch: Cardinal;                 /// < Source pitch (ignored when src is array)
-    srcHeight: Cardinal;                /// < Source height (ignored when src is array; may be 0 if Depth==1)
-
-    dstXInBytes,                        /// < Destination X in bytes
-    dstY,                               /// < Destination Y
-    dstZ: Cardinal;                     /// < Destination Z
-    dstLOD: Cardinal;                   /// < Destination LOD
-    dstMemoryType: TCUmemorytype;       /// < Destination memory type (host, device, array)
-    dstHost: Pointer;                   /// < Destination host pointer
-    dstDevice: TCUdeviceptr;            /// < Destination device pointer
-    dstArray: PCUarray;                 /// < Destination array reference
-    reserved1: Pointer;                 /// < Must be NULL
-    dstPitch: Cardinal;                 /// < Destination pitch (ignored when dst is array)
-    dstHeight: Cardinal;                /// < Destination height (ignored when dst is array; may be 0 if Depth==1)
-
-    WidthInBytes: Cardinal;             /// < Width of 3D memory copy in bytes
-    Height: Cardinal;                   /// < Height of 3D memory copy
-    Depth: Cardinal;                    /// < Depth of 3D memory copy
-  end;
-
-  // Array descriptor
-  PCUDA_ARRAY_DESCRIPTOR = ^TCUDA_ARRAY_DESCRIPTOR;
-
-  TCUDA_ARRAY_DESCRIPTOR = record
-    Width: Cardinal;                    /// < Width of array
-    Height: Cardinal;                   /// < Height of array
-    Format: TCUarray_format;            /// < Array format
-    NumChannels: Cardinal;              /// < Channels per array element
-  end;
-
-  // 3D array descriptor
-  TCUDA_ARRAY3D_DESCRIPTOR = record
-    Width: Cardinal;                     /// < Width of 3D array
-    Height: Cardinal;                    /// < Height of 3D array
-    Depth: Cardinal;                     /// < Depth of 3D array
-    Format: TCUarray_format;             /// < Array format
-    NumChannels: Cardinal;               /// < Channels per array element
-    Flags: Cardinal;                     /// < Flags
-  end;
-
-  // Flags to map or unmap a resource
-  TCUGLmap_flags = (CU_GL_MAP_RESOURCE_FLAGS_NONE,
-    CU_GL_MAP_RESOURCE_FLAGS_READ_ONLY, CU_GL_MAP_RESOURCE_FLAGS_WRITE_DISCARD);
-
-const
-  { * Override the texref format with a format inferred from the array.
-    * Flag for ::cuTexRefSetArray() }
-  CU_TRSA_OVERRIDE_FORMAT = $01;
-
-  { * Read the texture as integers rather than promoting the values to floats
-    * in the range [0,1].
-    * Flag for ::cuTexRefSetFlags() }
-  CU_TRSF_READ_AS_INTEGER = $01;
-
-  { * Use normalized texture coordinates in the range [0,1) instead of [0,dim).
-    * Flag for ::cuTexRefSetFlags() }
-  CU_TRSF_NORMALIZED_COORDINATES = $02;
-
-  { * For texture references loaded into the module, use default texunit from
-    * texture reference. }
-  CU_PARAM_TR_DEFAULT = -1;
-
-type
-  TDim3 = array [0 .. 2] of LongWord;
-
-{$IFDEF MSWINDOWS}
-type
-  HGPUNV = Pointer;
-{$ENDIF}
-
-type
-
-  TcuInit = function(Flags: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDriverGetVersion = function(out driverVersion: Integer): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDeviceGet = function(var device: TCUdevice; ordinal: Integer): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDeviceGetCount = function(var count: Integer): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDeviceGetName = function(name: PAnsiChar; len: Integer; dev: TCUdevice): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDeviceComputeCapability = function(var major: Integer; var minor: Integer; dev: TCUdevice): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDeviceTotalMem = function(bytes: PSize_t; dev: TCUdevice): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDeviceGetProperties = function(var prop: TCUdevprop; dev: TCUdevice): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuDeviceGetAttribute = function(pi: PSize_t; attrib: TCUdevice_attribute; dev: TCUdevice): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxCreate = function(var pctx: PCUcontext; Flags: Cardinal; dev: TCUdevice): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxDestroy = function(ctx: PCUcontext): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxAttach = function(var pctx: PCUcontext; Flags: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxDetach = function(ctx: PCUcontext): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxPushCurrent = function(ctx: PCUcontext): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxPopCurrent = function(var pctx: PCUcontext): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxGetDevice = function(var device: TCUdevice): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuCtxSynchronize = function: TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleLoad = function(var module: PCUmodule; const fname: PAnsiChar): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleLoadData = function(var module: PCUmodule; const image: PAnsiChar): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleLoadDataEx = function(var module: PCUmodule; var image; numOptions: Cardinal; var options: TCUjit_option; var optionValues): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleLoadFatBinary = function(var module: PCUmodule; var fatCubin): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleUnload = function(hmod: PCUmodule): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleGetFunction = function(out hfunc: PCUfunction; hmod: PCUmodule; const name: PAnsiChar): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleGetGlobal = function(out dptr: TCUdeviceptr; var bytes: Cardinal; hmod: PCUmodule; const name: PAnsiChar): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuModuleGetTexRef = function(out pTexRef: PCUtexref; hmod: PCUmodule; const name: PAnsiChar): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemGetInfo = function(var free: Cardinal; var total: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemAlloc = function(var dptr: TCUdeviceptr; bytesize: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemAllocPitch = function(var dptr: TCUdeviceptr; var pPitch: Cardinal; WidthInBytes: Cardinal; Height: Cardinal; ElementSizeBytes: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemFree = function(dptr: TCUdeviceptr): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemGetAddressRange = function(var pbase: TCUdeviceptr; var psize: Cardinal; dptr: TCUdeviceptr): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemAllocHost = function(var pp; bytesize: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemFreeHost = function(p: Pointer): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemHostAlloc = function(var pp: Pointer; bytesize: Cardinal; Flags: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemHostGetDevicePointer = function(var pdptr: TCUdeviceptr; p: Pointer; Flags: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemHostGetFlags = function(var pFlags: Cardinal; var p): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyHtoD = function(dstDevice: TCUdeviceptr; const srcHost: Pointer; ByteCount: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyDtoH = function(const dstHost: Pointer; srcDevice: TCUdeviceptr; ByteCount: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyDtoD = function(dstDevice: TCUdeviceptr; srcDevice: TCUdeviceptr; ByteCount: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyDtoDAsync = function(dstDevice: TCUdeviceptr; srcDevice: TCUdeviceptr; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyDtoA = function(dstArray: PCUarray; dstIndex: Cardinal; srcDevice: TCUdeviceptr; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyAtoD = function(dstDevice: TCUdeviceptr; hSrc: PCUarray; SrcIndex: Cardinal; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyHtoA = function(dstArray: PCUarray; dstIndex: Cardinal; pSrc: Pointer; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyAtoH = function(dstHost: Pointer; srcArray: PCUarray; SrcIndex: Cardinal; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyAtoA = function(dstArray: PCUarray; dstIndex: Cardinal; srcArray: PCUarray; SrcIndex: Cardinal; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpy2D = function(const pCopy: PCUDA_MEMCPY2D): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpy2DUnaligned = function(var pCopy: TCUDA_MEMCPY2D): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpy3D = function(var pCopy: TCUDA_MEMCPY3D): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyHtoDAsync = function(dstDevice: TCUdeviceptr; var srcHost; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyDtoHAsync = function(var dstHost; srcDevice: TCUdeviceptr; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyHtoAAsync = function(dstArray: PCUarray; dstIndex: Cardinal; var pSrc; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpyAtoHAsync = function(var dstHost; srcArray: PCUstream; SrcIndex: Cardinal; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpy2DAsync = function(var pCopy: TCUDA_MEMCPY2D; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemcpy3DAsync = function(var pCopy: TCUDA_MEMCPY3D; hStream: PCUstream)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemsetD8 = function(dstDevice: TCUdeviceptr; ub: Byte; N: Cardinal)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemsetD16 = function(dstDevice: TCUdeviceptr; uw: Word; N: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemsetD32 = function(dstDevice: TCUdeviceptr; ui: Cardinal; N: Cardinal)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemsetD2D8 = function(dstDevice: TCUdeviceptr; dstPitch: Cardinal;
-    ub: Byte; Width: Cardinal; Height: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemsetD2D16 = function(dstDevice: TCUdeviceptr; dstPitch: Cardinal;
-    uw: Word; Width: Cardinal; Height: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuMemsetD2D32 = function(dstDevice: TCUdeviceptr; dstPitch: Cardinal;
-    ui: Cardinal; Width: Cardinal; Height: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuFuncSetBlockShape = function(hfunc: PCUfunction; x: Integer; y: Integer;
-    z: Integer): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuFuncSetSharedSize = function(hfunc: PCUfunction; bytes: Cardinal)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuFuncGetAttribute = function(var pi: Integer; attrib: TCUfunction_attribute;
-    hfunc: PCUfunction): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuArrayCreate = function(var pHandle: PCUarray;
-    var pAllocateArray: TCUDA_ARRAY_DESCRIPTOR): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuArrayGetDescriptor = function(var pArrayDescriptor: TCUDA_ARRAY_DESCRIPTOR;
-    hArray: PCUarray): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuArrayDestroy = function(hArray: PCUarray): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuArray3DCreate = function(var pHandle: PCUarray;
-    var pAllocateArray: TCUDA_ARRAY3D_DESCRIPTOR): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuArray3DGetDescriptor = function(var pArrayDescriptor
-    : TCUDA_ARRAY3D_DESCRIPTOR; hArray: PCUarray): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefCreate = function(var pTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefDestroy = function(hTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefSetArray = function(hTexRef: PCUtexref; hArray: PCUarray;
-    Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefSetAddress = function(var ByteOffset: Cardinal; hTexRef: PCUtexref;
-    dptr: TCUdeviceptr; bytes: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefSetAddress2D = function(hTexRef: PCUtexref;
-    var desc: TCUDA_ARRAY_DESCRIPTOR; dptr: TCUdeviceptr; Pitch: Cardinal)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefSetFormat = function(hTexRef: PCUtexref; fmt: TCUarray_format;
-    NumPackedComponents: Integer): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefSetAddressMode = function(hTexRef: PCUtexref; dim: Integer;
-    am: TCUaddress_mode): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefSetFilterMode = function(hTexRef: PCUtexref; fm: TCUfilter_mode)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefSetFlags = function(hTexRef: PCUtexref; Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefGetAddress = function(var pdptr: TCUdeviceptr; hTexRef: PCUtexref)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefGetArray = function(var phArray: PCUarray; hTexRef: PCUtexref)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefGetAddressMode = function(var pam: TCUaddress_mode;
-    hTexRef: PCUtexref; dim: Integer): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefGetFilterMode = function(var pfm: TCUfilter_mode; hTexRef: PCUtexref)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefGetFormat = function(var pFormat: TCUarray_format;
-    var pNumChannels: Integer; hTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuTexRefGetFlags = function(var pFlags: Cardinal; hTexRef: PCUtexref)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuParamSetSize = function(hfunc: PCUfunction; numbytes: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuParamSeti = function(hfunc: PCUfunction; offset: Integer; value: Cardinal)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuParamSetf = function(hfunc: PCUfunction; offset: Integer; value: Single)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuParamSetv = function(hfunc: PCUfunction; offset: Integer; var ptr;
-    numbytes: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuParamSetTexRef = function(hfunc: PCUfunction; texunit: Integer;
-    hTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuLaunch = function(f: PCUfunction): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuLaunchGrid = function(f: PCUfunction; grid_width: Integer;
-    grid_height: Integer): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuLaunchGridAsync = function(f: PCUfunction; grid_width: Integer;
-    grid_height: Integer; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuEventCreate = function(var phEvent: PCUevent; Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuEventRecord = function(hEvent: PCUevent; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuEventQuery = function(hEvent: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuEventSynchronize = function(hEvent: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuEventDestroy = function(hEvent: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuEventElapsedTime = function(var pMilliseconds: Single; hStart: PCUevent;
-    hEnd: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuStreamCreate = function(var phStream: PCUstream; Flags: Cardinal)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuStreamQuery = function(hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuStreamSynchronize = function(hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuStreamDestroy = function(hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLCtxCreate = function(var pctx: PCUcontext; Flags: Cardinal;
-    device: TCUdevice): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsGLRegisterBuffer = function(var pCudaResource: PCUgraphicsResource;
-    buffer: Cardinal; Flags: TCUgraphicsMapResourceFlags): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsGLRegisterImage = function(var pCudaResource: PCUgraphicsResource;
-    image, target: Cardinal; Flags: TCUgraphicsMapResourceFlags): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuWGLGetDevice = function(var pDevice: TCUdevice; hGpu: HGPUNV): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsUnregisterResource = function(resource: PCUgraphicsResource)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsSubResourceGetMappedArray = function(var pArray: PCUarray;
-    resource: PCUgraphicsResource; arrayIndex: Cardinal; mipLevel: Cardinal)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsResourceGetMappedPointer = function(var pDevPtr: TCUdeviceptr;
-    out psize: Cardinal; resource: PCUgraphicsResource): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsResourceSetMapFlags = function(resource: PCUgraphicsResource;
-    Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsMapResources = function(count: Cardinal;
-    resources: PPCUgraphicsResource; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGraphicsUnmapResources = function(count: Cardinal;
-    resources: PPCUgraphicsResource; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLInit = procedure();{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLRegisterBufferObject = function(buffer: Cardinal): TCUresult;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLMapBufferObject = function(var dptr: TCUdeviceptr; var size: Cardinal; buffer: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLUnmapBufferObject = function(buffer: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLUnregisterBufferObject = function(buffer: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLSetBufferObjectMapFlags = function(buffer: Cardinal; Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLMapBufferObjectAsync = function(var dptr: TCUdeviceptr;
-    var size: Cardinal; buffer: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  TcuGLUnmapBufferObjectAsync = function(buffer: Cardinal; hStream: PCUstream)
-    : TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-var
-  cuInit: TcuInit;
-  cuDriverGetVersion: TcuDriverGetVersion;
-  cuDeviceGet: TcuDeviceGet;
-  cuDeviceGetCount: TcuDeviceGetCount;
-  cuDeviceGetName: TcuDeviceGetName;
-  cuDeviceComputeCapability: TcuDeviceComputeCapability;
-  cuDeviceTotalMem: TcuDeviceTotalMem;
-  cuDeviceGetProperties: TcuDeviceGetProperties;
-  cuDeviceGetAttribute: TcuDeviceGetAttribute;
-  cuCtxCreate: TcuCtxCreate;
-  cuCtxDestroy: TcuCtxDestroy;
-  cuCtxAttach: TcuCtxAttach;
-  cuCtxDetach: TcuCtxDetach;
-  cuCtxPushCurrent: TcuCtxPushCurrent;
-  cuCtxPopCurrent: TcuCtxPopCurrent;
-  cuCtxGetDevice: TcuCtxGetDevice;
-  cuCtxSynchronize: TcuCtxSynchronize;
-  cuModuleLoad: TcuModuleLoad;
-  cuModuleLoadData: TcuModuleLoadData;
-  cuModuleLoadDataEx: TcuModuleLoadDataEx;
-  cuModuleLoadFatBinary: TcuModuleLoadFatBinary;
-  cuModuleUnload: TcuModuleUnload;
-  cuModuleGetFunction: TcuModuleGetFunction;
-  cuModuleGetGlobal: TcuModuleGetGlobal;
-  cuModuleGetTexRef: TcuModuleGetTexRef;
-  cuMemGetInfo: TcuMemGetInfo;
-  cuMemAlloc: TcuMemAlloc;
-  cuMemAllocPitch: TcuMemAllocPitch;
-  cuMemFree: TcuMemFree;
-  cuMemGetAddressRange: TcuMemGetAddressRange;
-  cuMemAllocHost: TcuMemAllocHost;
-  cuMemFreeHost: TcuMemFreeHost;
-  cuMemHostAlloc: TcuMemHostAlloc;
-  cuMemHostGetDevicePointer: TcuMemHostGetDevicePointer;
-  cuMemHostGetFlags: TcuMemHostGetFlags;
-  cuMemcpyHtoD: TcuMemcpyHtoD;
-  cuMemcpyDtoH: TcuMemcpyDtoH;
-  cuMemcpyDtoD: TcuMemcpyDtoD;
-  cuMemcpyDtoDAsync: TcuMemcpyDtoDAsync;
-  cuMemcpyDtoA: TcuMemcpyDtoA;
-  cuMemcpyAtoD: TcuMemcpyAtoD;
-  cuMemcpyHtoA: TcuMemcpyHtoA;
-  cuMemcpyAtoH: TcuMemcpyAtoH;
-  cuMemcpyAtoA: TcuMemcpyAtoA;
-  cuMemcpy2D: TcuMemcpy2D;
-  cuMemcpy2DUnaligned: TcuMemcpy2DUnaligned;
-  cuMemcpy3D: TcuMemcpy3D;
-  cuMemcpyHtoDAsync: TcuMemcpyHtoDAsync;
-  cuMemcpyDtoHAsync: TcuMemcpyDtoHAsync;
-  cuMemcpyHtoAAsync: TcuMemcpyHtoAAsync;
-  cuMemcpyAtoHAsync: TcuMemcpyAtoHAsync;
-  cuMemcpy2DAsync: TcuMemcpy2DAsync;
-  cuMemcpy3DAsync: TcuMemcpy3DAsync;
-  cuMemsetD8: TcuMemsetD8;
-  cuMemsetD16: TcuMemsetD16;
-  cuMemsetD32: TcuMemsetD32;
-  cuMemsetD2D8: TcuMemsetD2D8;
-  cuMemsetD2D16: TcuMemsetD2D16;
-  cuMemsetD2D32: TcuMemsetD2D32;
-  cuFuncSetBlockShape: TcuFuncSetBlockShape;
-  cuFuncSetSharedSize: TcuFuncSetSharedSize;
-  cuFuncGetAttribute: TcuFuncGetAttribute;
-  cuArrayCreate: TcuArrayCreate;
-  cuArrayGetDescriptor: TcuArrayGetDescriptor;
-  cuArrayDestroy: TcuArrayDestroy;
-  cuArray3DCreate: TcuArray3DCreate;
-  cuArray3DGetDescriptor: TcuArray3DGetDescriptor;
-  cuTexRefCreate: TcuTexRefCreate;
-  cuTexRefDestroy: TcuTexRefDestroy;
-  cuTexRefSetArray: TcuTexRefSetArray;
-  cuTexRefSetAddress: TcuTexRefSetAddress;
-  cuTexRefSetAddress2D: TcuTexRefSetAddress2D;
-  cuTexRefSetFormat: TcuTexRefSetFormat;
-  cuTexRefSetAddressMode: TcuTexRefSetAddressMode;
-  cuTexRefSetFilterMode: TcuTexRefSetFilterMode;
-  cuTexRefSetFlags: TcuTexRefSetFlags;
-  cuTexRefGetAddress: TcuTexRefGetAddress;
-  cuTexRefGetArray: TcuTexRefGetArray;
-  cuTexRefGetAddressMode: TcuTexRefGetAddressMode;
-  cuTexRefGetFilterMode: TcuTexRefGetFilterMode;
-  cuTexRefGetFormat: TcuTexRefGetFormat;
-  cuTexRefGetFlags: TcuTexRefGetFlags;
-  cuParamSetSize: TcuParamSetSize;
-  cuParamSeti: TcuParamSeti;
-  cuParamSetf: TcuParamSetf;
-  cuParamSetv: TcuParamSetv;
-  cuParamSetTexRef: TcuParamSetTexRef;
-  cuLaunch: TcuLaunch;
-  cuLaunchGrid: TcuLaunchGrid;
-  cuLaunchGridAsync: TcuLaunchGridAsync;
-  cuEventCreate: TcuEventCreate;
-  cuEventRecord: TcuEventRecord;
-  cuEventQuery: TcuEventQuery;
-  cuEventSynchronize: TcuEventSynchronize;
-  cuEventDestroy: TcuEventDestroy;
-  cuEventElapsedTime: TcuEventElapsedTime;
-  cuStreamCreate: TcuStreamCreate;
-  cuStreamQuery: TcuStreamQuery;
-  cuStreamSynchronize: TcuStreamSynchronize;
-  cuStreamDestroy: TcuStreamDestroy;
-  cuGLInit: TcuGLInit;
-  cuGLCtxCreate: TcuGLCtxCreate;
-  cuGraphicsGLRegisterBuffer: TcuGraphicsGLRegisterBuffer;
-  cuGraphicsGLRegisterImage: TcuGraphicsGLRegisterImage;
-  cuWGLGetDevice: TcuWGLGetDevice;
-  cuGraphicsUnregisterResource: TcuGraphicsUnregisterResource;
-  cuGraphicsSubResourceGetMappedArray: TcuGraphicsSubResourceGetMappedArray;
-  cuGraphicsResourceGetMappedPointer: TcuGraphicsResourceGetMappedPointer;
-  cuGraphicsResourceSetMapFlags: TcuGraphicsResourceSetMapFlags;
-  cuGraphicsMapResources: TcuGraphicsMapResources;
-  cuGraphicsUnmapResources: TcuGraphicsUnmapResources;
-  cuGLRegisterBufferObject: TcuGLRegisterBufferObject;
-  cuGLMapBufferObject: TcuGLMapBufferObject;
-  cuGLUnmapBufferObject: TcuGLUnmapBufferObject;
-  cuGLUnregisterBufferObject: TcuGLUnregisterBufferObject;
-  cuGLSetBufferObjectMapFlags: TcuGLSetBufferObjectMapFlags;
-  cuGLMapBufferObjectAsync: TcuGLMapBufferObjectAsync;
-  cuGLUnmapBufferObjectAsync: TcuGLUnmapBufferObjectAsync;
-
-function InitCUDA: Boolean;
-procedure CloseCUDA;
-function InitCUDAFromLibrary(const LibName: WideString): Boolean;
-function IsCUDAInitialized: Boolean;
-function Get_CUDA_API_Error_String(AError: TCUresult): string;
-
-//==============================================================
-implementation
-//==============================================================
-
-const
-  INVALID_MODULEHANDLE = 0;
-
-  // ************** Windows specific ********************
-{$IFDEF MSWINDOWS}
-
-var
-  CUDAHandle: HINST;
-{$ENDIF}
-  // ************** UNIX specific ********************
-{$IFDEF UNIX}
-
-var
-  CUDAHandle: TLibHandle;
-{$ENDIF}
-
-const
-  cuInitName = 'cuInit';
-  cuDriverGetVersionName = 'cuDriverGetVersion';
-  cuDeviceGet_Name = 'cuDeviceGet';
-  cuDeviceGetCountName = 'cuDeviceGetCount';
-  cuDeviceGetNameName = 'cuDeviceGetName';
-  cuDeviceComputeCapabilityName = 'cuDeviceComputeCapability';
-  cuDeviceTotalMemName = 'cuDeviceTotalMem';
-  cuDeviceGetPropertiesName = 'cuDeviceGetProperties';
-  cuDeviceGetAttributeName = 'cuDeviceGetAttribute';
-  cuCtxCreateName = 'cuCtxCreate';
-  cuCtxDestroyName = 'cuCtxDestroy';
-  cuCtxAttachName = 'cuCtxAttach';
-  cuCtxDetachName = 'cuCtxDetach';
-  cuCtxPushCurrentName = 'cuCtxPushCurrent';
-  cuCtxPopCurrentName = 'cuCtxPopCurrent';
-  cuCtxGetDeviceName = 'cuCtxGetDevice';
-  cuCtxSynchronizeName = 'cuCtxSynchronize';
-  cuModuleLoadName = 'cuModuleLoad';
-  cuModuleLoadDataName = 'cuModuleLoadData';
-  cuModuleLoadDataExName = 'cuModuleLoadDataEx';
-  cuModuleLoadFatBinaryName = 'cuModuleLoadFatBinary';
-  cuModuleUnloadName = 'cuModuleUnload';
-  cuModuleGetFunctionName = 'cuModuleGetFunction';
-  cuModuleGetGlobalName = 'cuModuleGetGlobal';
-  cuModuleGetTexRefName = 'cuModuleGetTexRef';
-  cuMemGetInfoName = 'cuMemGetInfo';
-  cuMemAllocName = 'cuMemAlloc';
-  cuMemAllocPitchName = 'cuMemAllocPitch';
-  cuMemFreeName = 'cuMemFree';
-  cuMemGetAddressRangeName = 'cuMemGetAddressRange';
-  cuMemAllocHostName = 'cuMemAllocHost';
-  cuMemFreeHostName = 'cuMemFreeHost';
-  cuMemHostAllocName = 'cuMemHostAlloc';
-  cuMemHostGetDevicePointerName = 'cuMemHostGetDevicePointer';
-  cuMemHostGetFlagsName = 'cuMemHostGetFlags';
-  cuMemcpyHtoDName = 'cuMemcpyHtoD';
-  cuMemcpyDtoHName = 'cuMemcpyDtoH';
-  cuMemcpyDtoDName = 'cuMemcpyDtoD';
-  cuMemcpyDtoDAsyncName = 'cuMemcpyDtoDAsync';
-  cuMemcpyDtoAName = 'cuMemcpyDtoA';
-  cuMemcpyAtoDName = 'cuMemcpyAtoD';
-  cuMemcpyHtoAName = 'cuMemcpyHtoA';
-  cuMemcpyAtoHName = 'cuMemcpyAtoH';
-  cuMemcpyAtoAName = 'cuMemcpyAtoA';
-  cuMemcpy2DName = 'cuMemcpy2D';
-  cuMemcpy2DUnalignedName = 'cuMemcpy2DUnaligned';
-  cuMemcpy3DName = 'cuMemcpy3D';
-  cuMemcpyHtoDAsyncName = 'cuMemcpyHtoDAsync';
-  cuMemcpyDtoHAsyncName = 'cuMemcpyDtoHAsync';
-  cuMemcpyHtoAAsyncName = 'cuMemcpyHtoAAsync';
-  cuMemcpyAtoHAsyncName = 'cuMemcpyAtoHAsync';
-  cuMemcpy2DAsyncName = 'cuMemcpy2DAsync';
-  cuMemcpy3DAsyncName = 'cuMemcpy3DAsync';
-  cuMemsetD8Name = 'cuMemsetD8';
-  cuMemsetD16Name = 'cuMemsetD16';
-  cuMemsetD32Name = 'cuMemsetD32';
-  cuMemsetD2D8Name = 'cuMemsetD2D8';
-  cuMemsetD2D16Name = 'cuMemsetD2D16';
-  cuMemsetD2D32Name = 'cuMemsetD2D32';
-  cuFuncSetBlockShapeName = 'cuFuncSetBlockShape';
-  cuFuncSetSharedSizeName = 'cuFuncSetSharedSize';
-  cuFuncGetAttributeName = 'cuFuncGetAttribute';
-  cuArrayCreateName = 'cuArrayCreate';
-  cuArrayGetDescriptorName = 'cuArrayGetDescriptor';
-  cuArrayDestroyName = 'cuArrayDestroy';
-  cuArray3DCreateName = 'cuArray3DCreate';
-  cuArray3DGetDescriptorName = 'cuArray3DGetDescriptor';
-  cuTexRefCreateName = 'cuTexRefCreate';
-  cuTexRefDestroyName = 'cuTexRefDestroy';
-  cuTexRefSetArrayName = 'cuTexRefSetArray';
-  cuTexRefSetAddressName = 'cuTexRefSetAddress';
-  cuTexRefSetAddress2DName = 'cuTexRefSetAddress2D';
-  cuTexRefSetFormatName = 'cuTexRefSetFormat';
-  cuTexRefSetAddressModeName = 'cuTexRefSetAddressMode';
-  cuTexRefSetFilterModeName = 'cuTexRefSetFilterMode';
-  cuTexRefSetFlagsName = 'cuTexRefSetFlags';
-  cuTexRefGetAddressName = 'cuTexRefGetAddress';
-  cuTexRefGetArrayName = 'cuTexRefGetArray';
-  cuTexRefGetAddressModeName = 'cuTexRefGetAddressMode';
-  cuTexRefGetFilterModeName = 'cuTexRefGetFilterMode';
-  cuTexRefGetFormatName = 'cuTexRefGetFormat';
-  cuTexRefGetFlagsName = 'cuTexRefGetFlags';
-  cuParamSetSizeName = 'cuParamSetSize';
-  cuParamSetiName = 'cuParamSeti';
-  cuParamSetfName = 'cuParamSetf';
-  cuParamSetvName = 'cuParamSetv';
-  cuParamSetTexRefName = 'cuParamSetTexRef';
-  cuLaunchName = 'cuLaunch';
-  cuLaunchGridName = 'cuLaunchGrid';
-  cuLaunchGridAsyncName = 'cuLaunchGridAsync';
-  cuEventCreateName = 'cuEventCreate';
-  cuEventRecordName = 'cuEventRecord';
-  cuEventQueryName = 'cuEventQuery';
-  cuEventSynchronizeName = 'cuEventSynchronize';
-  cuEventDestroyName = 'cuEventDestroy';
-  cuEventElapsedTimeName = 'cuEventElapsedTime';
-  cuStreamCreateName = 'cuStreamCreate';
-  cuStreamQueryName = 'cuStreamQuery';
-  cuStreamSynchronizeName = 'cuStreamSynchronize';
-  cuStreamDestroyName = 'cuStreamDestroy';
-  cuGLCtxCreateName = 'cuGLCtxCreate';
-  cuGraphicsGLRegisterBufferName = 'cuGraphicsGLRegisterBuffer';
-  cuGraphicsGLRegisterImageName = 'cuGraphicsGLRegisterImage';
-  cuWGLGetDeviceName = 'cuWGLGetDevice';
-  cuGraphicsUnregisterResourceName = 'cuGraphicsUnregisterResource';
-  cuGraphicsSubResourceGetMappedArrayName =
-    'cuGraphicsSubResourceGetMappedArray';
-  cuGraphicsResourceGetMappedPointerName = 'cuGraphicsResourceGetMappedPointer';
-  cuGraphicsResourceSetMapFlagsName = 'cuGraphicsResourceSetMapFlags';
-  cuGraphicsMapResourcesName = 'cuGraphicsMapResources';
-  cuGraphicsUnmapResourcesName = 'cuGraphicsUnmapResources';
-  cuGLInitName = 'cuGLInit';
-  cuGLRegisterBufferObjectName = 'cuGLRegisterBufferObject';
-  cuGLMapBufferObjectName = 'cuGLMapBufferObject';
-  cuGLUnmapBufferObjectName = 'cuGLUnmapBufferObject';
-  cuGLUnregisterBufferObjectName = 'cuGLUnregisterBufferObject';
-  cuGLSetBufferObjectMapFlagsName = 'cuGLSetBufferObjectMapFlags';
-  cuGLMapBufferObjectAsyncName = 'cuGLMapBufferObjectAsync';
-  cuGLUnmapBufferObjectAsyncName = 'cuGLUnmapBufferObjectAsync';
-
-{$IFDEF CUDA_DEBUG_MODE}
-
-var
-  cuInit_: TcuInit;
-  cuDriverGetVersion_: TcuDriverGetVersion;
-  cuDeviceGet_: TcuDeviceGet;
-  cuDeviceGetCount_: TcuDeviceGetCount;
-  cuDeviceGetName_: TcuDeviceGetName;
-  cuDeviceComputeCapability_: TcuDeviceComputeCapability;
-  cuDeviceTotalMem_: TcuDeviceTotalMem;
-  cuDeviceGetProperties_: TcuDeviceGetProperties;
-  cuDeviceGetAttribute_: TcuDeviceGetAttribute;
-  cuCtxCreate_: TcuCtxCreate;
-  cuCtxDestroy_: TcuCtxDestroy;
-  cuCtxAttach_: TcuCtxAttach;
-  cuCtxDetach_: TcuCtxDetach;
-  cuCtxPushCurrent_: TcuCtxPushCurrent;
-  cuCtxPopCurrent_: TcuCtxPopCurrent;
-  cuCtxGetDevice_: TcuCtxGetDevice;
-  cuCtxSynchronize_: TcuCtxSynchronize;
-  cuModuleLoad_: TcuModuleLoad;
-  cuModuleLoadData_: TcuModuleLoadData;
-  cuModuleLoadDataEx_: TcuModuleLoadDataEx;
-  cuModuleLoadFatBinary_: TcuModuleLoadFatBinary;
-  cuModuleUnload_: TcuModuleUnload;
-  cuModuleGetFunction_: TcuModuleGetFunction;
-  cuModuleGetGlobal_: TcuModuleGetGlobal;
-  cuModuleGetTexRef_: TcuModuleGetTexRef;
-  cuMemGetInfo_: TcuMemGetInfo;
-  cuMemAlloc_: TcuMemAlloc;
-  cuMemAllocPitch_: TcuMemAllocPitch;
-  cuMemFree_: TcuMemFree;
-  cuMemGetAddressRange_: TcuMemGetAddressRange;
-  cuMemAllocHost_: TcuMemAllocHost;
-  cuMemFreeHost_: TcuMemFreeHost;
-  cuMemHostAlloc_: TcuMemHostAlloc;
-  cuMemHostGetDevicePointer_: TcuMemHostGetDevicePointer;
-  cuMemHostGetFlags_: TcuMemHostGetFlags;
-  cuMemcpyHtoD_: TcuMemcpyHtoD;
-  cuMemcpyDtoH_: TcuMemcpyDtoH;
-  cuMemcpyDtoD_: TcuMemcpyDtoD;
-  cuMemcpyDtoDAsync_: TcuMemcpyDtoDAsync;
-  cuMemcpyDtoA_: TcuMemcpyDtoA;
-  cuMemcpyAtoD_: TcuMemcpyAtoD;
-  cuMemcpyHtoA_: TcuMemcpyHtoA;
-  cuMemcpyAtoH_: TcuMemcpyAtoH;
-  cuMemcpyAtoA_: TcuMemcpyAtoA;
-  cuMemcpy2D_: TcuMemcpy2D;
-  cuMemcpy2DUnaligned_: TcuMemcpy2DUnaligned;
-  cuMemcpy3D_: TcuMemcpy3D;
-  cuMemcpyHtoDAsync_: TcuMemcpyHtoDAsync;
-  cuMemcpyDtoHAsync_: TcuMemcpyDtoHAsync;
-  cuMemcpyHtoAAsync_: TcuMemcpyHtoAAsync;
-  cuMemcpyAtoHAsync_: TcuMemcpyAtoHAsync;
-  cuMemcpy2DAsync_: TcuMemcpy2DAsync;
-  cuMemcpy3DAsync_: TcuMemcpy3DAsync;
-  cuMemsetD8_: TcuMemsetD8;
-  cuMemsetD16_: TcuMemsetD16;
-  cuMemsetD32_: TcuMemsetD32;
-  cuMemsetD2D8_: TcuMemsetD2D8;
-  cuMemsetD2D16_: TcuMemsetD2D16;
-  cuMemsetD2D32_: TcuMemsetD2D32;
-  cuFuncSetBlockShape_: TcuFuncSetBlockShape;
-  cuFuncSetSharedSize_: TcuFuncSetSharedSize;
-  cuFuncGetAttribute_: TcuFuncGetAttribute;
-  cuArrayCreate_: TcuArrayCreate;
-  cuArrayGetDescriptor_: TcuArrayGetDescriptor;
-  cuArrayDestroy_: TcuArrayDestroy;
-  cuArray3DCreate_: TcuArray3DCreate;
-  cuArray3DGetDescriptor_: TcuArray3DGetDescriptor;
-  cuTexRefCreate_: TcuTexRefCreate;
-  cuTexRefDestroy_: TcuTexRefDestroy;
-  cuTexRefSetArray_: TcuTexRefSetArray;
-  cuTexRefSetAddress_: TcuTexRefSetAddress;
-  cuTexRefSetAddress2D_: TcuTexRefSetAddress2D;
-  cuTexRefSetFormat_: TcuTexRefSetFormat;
-  cuTexRefSetAddressMode_: TcuTexRefSetAddressMode;
-  cuTexRefSetFilterMode_: TcuTexRefSetFilterMode;
-  cuTexRefSetFlags_: TcuTexRefSetFlags;
-  cuTexRefGetAddress_: TcuTexRefGetAddress;
-  cuTexRefGetArray_: TcuTexRefGetArray;
-  cuTexRefGetAddressMode_: TcuTexRefGetAddressMode;
-  cuTexRefGetFilterMode_: TcuTexRefGetFilterMode;
-  cuTexRefGetFormat_: TcuTexRefGetFormat;
-  cuTexRefGetFlags_: TcuTexRefGetFlags;
-  cuParamSetSize_: TcuParamSetSize;
-  cuParamSeti_: TcuParamSeti;
-  cuParamSetf_: TcuParamSetf;
-  cuParamSetv_: TcuParamSetv;
-  cuParamSetTexRef_: TcuParamSetTexRef;
-  cuLaunch_: TcuLaunch;
-  cuLaunchGrid_: TcuLaunchGrid;
-  cuLaunchGridAsync_: TcuLaunchGridAsync;
-  cuEventCreate_: TcuEventCreate;
-  cuEventRecord_: TcuEventRecord;
-  cuEventQuery_: TcuEventQuery;
-  cuEventSynchronize_: TcuEventSynchronize;
-  cuEventDestroy_: TcuEventDestroy;
-  cuEventElapsedTime_: TcuEventElapsedTime;
-  cuStreamCreate_: TcuStreamCreate;
-  cuStreamQuery_: TcuStreamQuery;
-  cuStreamSynchronize_: TcuStreamSynchronize;
-  cuStreamDestroy_: TcuStreamDestroy;
-  cuGLCtxCreate_: TcuGLCtxCreate;
-  cuGraphicsGLRegisterBuffer_: TcuGraphicsGLRegisterBuffer;
-  cuGraphicsGLRegisterImage_: TcuGraphicsGLRegisterImage;
-  cuWGLGetDevice_: TcuWGLGetDevice;
-  cuGraphicsUnregisterResource_: TcuGraphicsUnregisterResource;
-  cuGraphicsSubResourceGetMappedArray_: TcuGraphicsSubResourceGetMappedArray;
-  cuGraphicsResourceGetMappedPointer_: TcuGraphicsResourceGetMappedPointer;
-  cuGraphicsResourceSetMapFlags_: TcuGraphicsResourceSetMapFlags;
-  cuGraphicsMapResources_: TcuGraphicsMapResources;
-  cuGraphicsUnmapResources_: TcuGraphicsUnmapResources;
-  cuGLRegisterBufferObject_: TcuGLRegisterBufferObject;
-  cuGLMapBufferObject_: TcuGLMapBufferObject;
-  cuGLUnmapBufferObject_: TcuGLUnmapBufferObject;
-  cuGLUnregisterBufferObject_: TcuGLUnregisterBufferObject;
-  cuGLSetBufferObjectMapFlags_: TcuGLSetBufferObjectMapFlags;
-  cuGLMapBufferObjectAsync_: TcuGLMapBufferObjectAsync;
-  cuGLUnmapBufferObjectAsync_: TcuGLUnmapBufferObjectAsync;
-
-function cuInitShell(Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuInit_(Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuInitName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDriverGetVersionShell(out driverVersion: Integer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDriverGetVersion_(driverVersion);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuDriverGetVersionName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDeviceGetShell(var device: TCUdevice; ordinal: Integer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDeviceGet_(device, ordinal);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuDeviceGet_Name, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDeviceGetCountShell(var count: Integer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDeviceGetCount_(count);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuDeviceGetCountName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDeviceGetNameShell(name: PAnsiChar; len: Integer; dev: TCUdevice)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDeviceGetName_(name, len, dev);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuDeviceGetNameName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDeviceComputeCapabilityShell(var major: Integer; var minor: Integer;
-  dev: TCUdevice): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDeviceComputeCapability_(major, minor, dev);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuDeviceComputeCapabilityName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDeviceTotalMemShell(bytes: PSize_t; dev: TCUdevice): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDeviceTotalMem_(bytes, dev);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuDeviceTotalMemName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDeviceGetPropertiesShell(var prop: TCUdevprop; dev: TCUdevice)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDeviceGetProperties_(prop, dev);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuDeviceGetPropertiesName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuDeviceGetAttributeShell(pi: PSize_t; attrib: TCUdevice_attribute;
-  dev: TCUdevice): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuDeviceGetAttribute_(pi, attrib, dev);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuDeviceGetAttributeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxCreateShell(var pctx: PCUcontext; Flags: Cardinal; dev: TCUdevice)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxCreate_(pctx, Flags, dev);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuCtxCreateName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxDestroyShell(ctx: PCUcontext): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxDestroy_(ctx);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuCtxDestroyName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxAttachShell(var pctx: PCUcontext; Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxAttach_(pctx, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuCtxAttachName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxDetachShell(ctx: PCUcontext): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxDetach_(ctx);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuCtxDetachName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxPushCurrentShell(ctx: PCUcontext): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxPushCurrent_(ctx);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuCtxPushCurrentName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxPopCurrentShell(var pctx: PCUcontext): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxPopCurrent_(pctx);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuCtxPopCurrentName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxGetDeviceShell(var device: TCUdevice): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxGetDevice_(device);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuCtxGetDeviceName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuCtxSynchronizeShell: TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuCtxSynchronize_;
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuCtxSynchronizeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleLoadShell(var module: PCUmodule; const fname: PAnsiChar)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleLoad_(module, fname);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuModuleLoadName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleLoadDataShell(var module: PCUmodule; const image: PAnsiChar)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleLoadData_(module, image);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuModuleLoadDataName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleLoadDataExShell(var module: PCUmodule; var image;
-  numOptions: Cardinal; var options: TCUjit_option; var optionValues)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleLoadDataEx_(module, image, numOptions, options,
-    optionValues);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuModuleLoadDataExName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleLoadFatBinaryShell(var module: PCUmodule; var fatCubin)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleLoadFatBinary_(module, fatCubin);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuModuleLoadFatBinaryName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleUnloadShell(hmod: PCUmodule): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleUnload_(hmod);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuModuleUnloadName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleGetFunctionShell(out hfunc: PCUfunction; hmod: PCUmodule;
-  const name: PAnsiChar): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleGetFunction_(hfunc, hmod, name);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuModuleGetFunctionName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleGetGlobalShell(out dptr: TCUdeviceptr; var bytes: Cardinal;
-  hmod: PCUmodule; const name: PAnsiChar): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleGetGlobal_(dptr, bytes, hmod, name);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuModuleGetGlobalName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuModuleGetTexRefShell(out pTexRef: PCUtexref; hmod: PCUmodule;
-  const name: PAnsiChar): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuModuleGetTexRef_(pTexRef, hmod, name);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuModuleGetTexRefName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemGetInfoShell(var free: Cardinal; var total: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemGetInfo_(free, total);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemGetInfoName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemAllocShell(var dptr: TCUdeviceptr; bytesize: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemAlloc_(dptr, bytesize);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemAllocName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemAllocPitchShell(var dptr: TCUdeviceptr; var pPitch: Cardinal;
-  WidthInBytes: Cardinal; Height: Cardinal; ElementSizeBytes: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemAllocPitch_(dptr, pPitch, WidthInBytes, Height,
-    ElementSizeBytes);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemAllocPitchName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemFreeShell(dptr: TCUdeviceptr): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemFree_(dptr);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemFreeName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemGetAddressRangeShell(var pbase: TCUdeviceptr; var psize: Cardinal;
-  dptr: TCUdeviceptr): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemGetAddressRange_(pbase, psize, dptr);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemGetAddressRangeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemAllocHostShell(var pp; bytesize: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemAllocHost_(pp, bytesize);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemAllocHostName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemFreeHostShell(p: Pointer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemFreeHost_(p);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemFreeHostName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemHostAllocShell(var pp: Pointer; bytesize: Cardinal; Flags: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemHostAlloc_(pp, bytesize, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemHostAllocName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemHostGetDevicePointerShell(var pdptr: TCUdeviceptr; p: Pointer;
-  Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemHostGetDevicePointer_(pdptr, p, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemHostGetDevicePointerName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemHostGetFlagsShell(var pFlags: Cardinal; var p): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemHostGetFlags_(pFlags, p);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemHostGetFlagsName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyHtoDShell(dstDevice: TCUdeviceptr; const srcHost: Pointer;
-  ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyHtoD_(dstDevice, srcHost, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyHtoDName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyDtoHShell(const dstHost: Pointer; srcDevice: TCUdeviceptr;
-  ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyDtoH_(dstHost, srcDevice, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyDtoHName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyDtoDShell(dstDevice: TCUdeviceptr; srcDevice: TCUdeviceptr;
-  ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyDtoD_(dstDevice, srcDevice, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyDtoDName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyDtoDAsyncShell(dstDevice: TCUdeviceptr;
-  srcDevice: TCUdeviceptr; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyDtoDAsync_(dstDevice, srcDevice, ByteCount, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpyDtoDAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyDtoAShell(dstArray: PCUarray; dstIndex: Cardinal;
-  srcDevice: TCUdeviceptr; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyDtoA_(dstArray, dstIndex, srcDevice, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyDtoAName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyAtoDShell(dstDevice: TCUdeviceptr; hSrc: PCUarray;
-  SrcIndex: Cardinal; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyAtoD_(dstDevice, hSrc, SrcIndex, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyAtoDName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyHtoAShell(dstArray: PCUarray; dstIndex: Cardinal;
-  pSrc: Pointer; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyHtoA_(dstArray, dstIndex, pSrc, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyHtoAName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyAtoHShell(dstHost: Pointer; srcArray: PCUarray;
-  SrcIndex: Cardinal; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyAtoH_(dstHost, srcArray, SrcIndex, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyAtoHName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyAtoAShell(dstArray: PCUarray; dstIndex: Cardinal;
-  srcArray: PCUarray; SrcIndex: Cardinal; ByteCount: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyAtoA_(dstArray, dstIndex, srcArray, SrcIndex, ByteCount);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpyAtoAName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpy2DShell(const pCopy: PCUDA_MEMCPY2D): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpy2D_(pCopy);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpy2DName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpy2DUnalignedShell(var pCopy: TCUDA_MEMCPY2D): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpy2DUnaligned_(pCopy);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpy2DUnalignedName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpy3DShell(var pCopy: TCUDA_MEMCPY3D): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpy3D_(pCopy);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemcpy3DName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyHtoDAsyncShell(dstDevice: TCUdeviceptr; var srcHost;
-  ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyHtoDAsync_(dstDevice, srcHost, ByteCount, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpyHtoDAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyDtoHAsyncShell(var dstHost; srcDevice: TCUdeviceptr;
-  ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyDtoHAsync_(dstHost, srcDevice, ByteCount, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpyDtoHAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyHtoAAsyncShell(dstArray: PCUarray; dstIndex: Cardinal;
-  var pSrc; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyHtoAAsync_(dstArray, dstIndex, pSrc, ByteCount, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpyHtoAAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpyAtoHAsyncShell(var dstHost; srcArray: PCUstream;
-  SrcIndex: Cardinal; ByteCount: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpyAtoHAsync_(dstHost, srcArray, SrcIndex, ByteCount, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpyAtoHAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpy2DAsyncShell(var pCopy: TCUDA_MEMCPY2D; hStream: PCUstream)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpy2DAsync_(pCopy, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpy2DAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemcpy3DAsyncShell(var pCopy: TCUDA_MEMCPY3D; hStream: PCUstream)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemcpy3DAsync_(pCopy, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuMemcpy3DAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemsetD8Shell(dstDevice: TCUdeviceptr; ub: Byte; N: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemsetD8_(dstDevice, ub, N);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemsetD8Name, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemsetD16Shell(dstDevice: TCUdeviceptr; uw: Word; N: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemsetD16_(dstDevice, uw, N);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemsetD16Name, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemsetD32Shell(dstDevice: TCUdeviceptr; ui: Cardinal; N: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemsetD32_(dstDevice, ui, N);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemsetD32Name, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemsetD2D8Shell(dstDevice: TCUdeviceptr; dstPitch: Cardinal;
-  ub: Byte; Width: Cardinal; Height: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemsetD2D8_(dstDevice, dstPitch, ub, Width, Height);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemsetD2D8Name, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemsetD2D16Shell(dstDevice: TCUdeviceptr; dstPitch: Cardinal;
-  uw: Word; Width: Cardinal; Height: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemsetD2D16_(dstDevice, dstPitch, uw, Width, Height);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemsetD2D16Name, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuMemsetD2D32Shell(dstDevice: TCUdeviceptr; dstPitch: Cardinal;
-  ui: Cardinal; Width: Cardinal; Height: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuMemsetD2D32_(dstDevice, dstPitch, ui, Width, Height);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuMemsetD2D32Name, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuFuncSetBlockShapeShell(hfunc: PCUfunction; x: Integer; y: Integer;
-  z: Integer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuFuncSetBlockShape_(hfunc, x, y, z);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuFuncSetBlockShapeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuFuncSetSharedSizeShell(hfunc: PCUfunction; bytes: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuFuncSetSharedSize_(hfunc, bytes);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuFuncSetSharedSizeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuFuncGetAttributeShell(var pi: Integer; attrib: TCUfunction_attribute;
-  hfunc: PCUfunction): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuFuncGetAttribute_(pi, attrib, hfunc);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuFuncGetAttributeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuArrayCreateShell(var pHandle: PCUarray;
-  var pAllocateArray: TCUDA_ARRAY_DESCRIPTOR): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuArrayCreate_(pHandle, pAllocateArray);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuArrayCreateName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuArrayGetDescriptorShell(var pArrayDescriptor: TCUDA_ARRAY_DESCRIPTOR;
-  hArray: PCUarray): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuArrayGetDescriptor_(pArrayDescriptor, hArray);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuArrayGetDescriptorName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuArrayDestroyShell(hArray: PCUarray): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuArrayDestroy_(hArray);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuArrayDestroyName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuArray3DCreateShell(var pHandle: PCUarray;
-  var pAllocateArray: TCUDA_ARRAY3D_DESCRIPTOR): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuArray3DCreate_(pHandle, pAllocateArray);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuArray3DCreateName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuArray3DGetDescriptorShell(var pArrayDescriptor
-  : TCUDA_ARRAY3D_DESCRIPTOR; hArray: PCUarray): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuArray3DGetDescriptor_(pArrayDescriptor, hArray);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuArray3DGetDescriptorName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefCreateShell(var pTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-begin
-  Result := cuTexRefCreate_(pTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuTexRefCreateName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefDestroyShell(hTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefDestroy_(hTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefDestroyName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefSetArrayShell(hTexRef: PCUtexref; hArray: PCUarray;
-  Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefSetArray_(hTexRef, hArray, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefSetArrayName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefSetAddressShell(var ByteOffset: Cardinal; hTexRef: PCUtexref;
-  dptr: TCUdeviceptr; bytes: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefSetAddress_(ByteOffset, hTexRef, dptr, bytes);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefSetAddressName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefSetAddress2DShell(hTexRef: PCUtexref;
-  var desc: TCUDA_ARRAY_DESCRIPTOR; dptr: TCUdeviceptr; Pitch: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefSetAddress2D_(hTexRef, desc, dptr, Pitch);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefSetAddress2DName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefSetFormatShell(hTexRef: PCUtexref; fmt: TCUarray_format;
-  NumPackedComponents: Integer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefSetFormat_(hTexRef, fmt, NumPackedComponents);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefSetFormatName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefSetAddressModeShell(hTexRef: PCUtexref; dim: Integer;
-  am: TCUaddress_mode): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefSetAddressMode_(hTexRef, dim, am);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefSetAddressModeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefSetFilterModeShell(hTexRef: PCUtexref; fm: TCUfilter_mode)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefSetFilterMode_(hTexRef, fm);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefSetFilterModeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefSetFlagsShell(hTexRef: PCUtexref; Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}begin
-  Result := cuTexRefSetFlags_(hTexRef, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefSetFlagsName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefGetAddressShell(var pdptr: TCUdeviceptr; hTexRef: PCUtexref)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefGetAddress_(pdptr, hTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefGetAddressName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefGetArrayShell(var phArray: PCUarray; hTexRef: PCUtexref)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefGetArray_(phArray, hTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefGetArrayName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefGetAddressModeShell(var pam: TCUaddress_mode;
-  hTexRef: PCUtexref; dim: Integer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefGetAddressMode_(pam, hTexRef, dim);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefGetAddressModeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefGetFilterModeShell(var pfm: TCUfilter_mode; hTexRef: PCUtexref)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefGetFilterMode_(pfm, hTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefGetFilterModeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefGetFormatShell(var pFormat: TCUarray_format;
-  var pNumChannels: Integer; hTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefGetFormat_(pFormat, pNumChannels, hTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefGetFormatName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuTexRefGetFlagsShell(var pFlags: Cardinal; hTexRef: PCUtexref)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuTexRefGetFlags_(pFlags, hTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuTexRefGetFlagsName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuParamSetSizeShell(hfunc: PCUfunction; numbytes: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuParamSetSize_(hfunc, numbytes);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuParamSetSizeName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuParamSetiShell(hfunc: PCUfunction; offset: Integer; value: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuParamSeti_(hfunc, offset, value);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuParamSetiName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuParamSetfShell(hfunc: PCUfunction; offset: Integer; value: Single)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuParamSetf_(hfunc, offset, value);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuParamSetfName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuParamSetvShell(hfunc: PCUfunction; offset: Integer; var ptr;
-  numbytes: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuParamSetv_(hfunc, offset, ptr, numbytes);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuParamSetvName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuParamSetTexRefShell(hfunc: PCUfunction; texunit: Integer;
-  hTexRef: PCUtexref): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuParamSetTexRef_(hfunc, texunit, hTexRef);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuParamSetTexRefName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuLaunchShell(f: PCUfunction): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuLaunch_(f);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuLaunchName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuLaunchGridShell(f: PCUfunction; grid_width: Integer;
-  grid_height: Integer): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuLaunchGrid_(f, grid_width, grid_height);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuLaunchGridName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuLaunchGridAsyncShell(f: PCUfunction; grid_width: Integer;
-  grid_height: Integer; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuLaunchGridAsync_(f, grid_width, grid_height, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuLaunchGridAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuEventCreateShell(var phEvent: PCUevent; Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuEventCreate_(phEvent, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuEventCreateName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuEventRecordShell(hEvent: PCUevent; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuEventRecord_(hEvent, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuEventRecordName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuEventQueryShell(hEvent: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuEventQuery_(hEvent);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuEventQueryName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuEventSynchronizeShell(hEvent: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuEventSynchronize_(hEvent);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuEventSynchronizeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuEventDestroyShell(hEvent: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuEventDestroy_(hEvent);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuEventDestroyName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuEventElapsedTimeShell(var pMilliseconds: Single; hStart: PCUevent;
-  hEnd: PCUevent): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuEventElapsedTime_(pMilliseconds, hStart, hEnd);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuEventElapsedTimeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuStreamCreateShell(var phStream: PCUstream; Flags: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuStreamCreate_(phStream, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuStreamCreateName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuStreamQueryShell(hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuStreamQuery_(hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuStreamQueryName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuStreamSynchronizeShell(hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuStreamSynchronize_(hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuStreamSynchronizeName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuStreamDestroyShell(hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuStreamDestroy_(hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuStreamDestroyName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLCtxCreateShell(var pctx: PCUcontext; Flags: Cardinal;
-  device: TCUdevice): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLCtxCreate_(pctx, Flags, device);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuGLCtxCreateName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsGLRegisterBufferShell(var pCudaResource: PCUgraphicsResource;
-  buffer: Cardinal; Flags: TCUgraphicsMapResourceFlags): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsGLRegisterBuffer_(pCudaResource, buffer, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGraphicsGLRegisterBufferName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsGLRegisterImageShell(var pCudaResource: PCUgraphicsResource;
-  image, target: Cardinal; Flags: TCUgraphicsMapResourceFlags): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsGLRegisterImage_(pCudaResource, image, target, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGraphicsGLRegisterImageName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuWGLGetDeviceShell(var pDevice: TCUdevice; hGpu: HGPUNV): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuWGLGetDevice_(pDevice, hGpu);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuWGLGetDeviceName, Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsUnregisterResourceShell(resource: PCUgraphicsResource)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsUnregisterResource_(resource);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGraphicsUnregisterResourceName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsSubResourceGetMappedArrayShell(var pArray: PCUarray;
-  resource: PCUgraphicsResource; arrayIndex: Cardinal; mipLevel: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsSubResourceGetMappedArray_(pArray, resource, arrayIndex,
-    mipLevel);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuGraphicsSubResourceGetMappedArrayName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsResourceGetMappedPointerShell(var pDevPtr: TCUdeviceptr;
-  out psize: Cardinal; resource: PCUgraphicsResource): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsResourceGetMappedPointer_(pDevPtr, psize, resource);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr,
-      [cuGraphicsResourceGetMappedPointerName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsResourceSetMapFlagsShell(resource: PCUgraphicsResource;
-  Flags: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsResourceSetMapFlags_(resource, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGraphicsResourceSetMapFlagsName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsMapResourcesShell(count: Cardinal;
-  resources: PPCUgraphicsResource; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsMapResources_(count, resources, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGraphicsMapResourcesName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGraphicsUnmapResourcesShell(count: Cardinal;
-  resources: PPCUgraphicsResource; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGraphicsUnmapResources_(count, resources, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGraphicsUnmapResourcesName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLRegisterBufferObjectShell(buffer: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLRegisterBufferObject_(buffer);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGLRegisterBufferObjectName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLMapBufferObjectShell(var dptr: TCUdeviceptr; var size: Cardinal;
-  buffer: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLMapBufferObject_(dptr, size, buffer);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGLMapBufferObjectName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLUnmapBufferObjectShell(buffer: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLUnmapBufferObject_(buffer);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGLUnmapBufferObjectName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLUnregisterBufferObjectShell(buffer: Cardinal): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLUnregisterBufferObject_(buffer);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGLUnregisterBufferObjectName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLSetBufferObjectMapFlagsShell(buffer: Cardinal; Flags: Cardinal)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLSetBufferObjectMapFlags_(buffer, Flags);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGLSetBufferObjectMapFlagsName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLMapBufferObjectAsyncShell(var dptr: TCUdeviceptr;
-  var size: Cardinal; buffer: Cardinal; hStream: PCUstream): TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLMapBufferObjectAsync_(dptr, size, buffer, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGLMapBufferObjectAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-function cuGLUnmapBufferObjectAsyncShell(buffer: Cardinal; hStream: PCUstream)
-  : TCUresult;
-{$IFDEF MSWINDOWS} stdcall;{$ELSE} cdecl;{$ENDIF}
-begin
-  Result := cuGLUnmapBufferObjectAsync_(buffer, hStream);
-  if Result <> CUDA_SUCCESS then
-    ShowMessage(Format(strFuncRetErr, [cuGLUnmapBufferObjectAsyncName,
-      Get_CUDA_API_Error_String(Result)]))
-end;
-
-{$ENDIF CUDA_DEBUG_MODE}
-
-function GetProcAddressCUDA(ProcName: PAnsiChar): Pointer;
-var
-  Alt: AnsiString;
-begin
-  Alt := AnsiString(ProcName) + '_v2';
-  Result := GetProcAddress(Cardinal(CUDAHandle), PAnsiChar(Alt));
-  if Result = nil then
-      Result := GetProcAddress(Cardinal(CUDAHandle), ProcName);
-end;
-
-function InitCUDA: Boolean;
-begin
-  if CUDAHandle = INVALID_MODULEHANDLE then
-    Result := InitCUDAFromLibrary(CUDAAPIDLL)
-  else
-    Result := True;
-end;
-
-procedure CloseCUDA;
-begin
-  if CUDAHandle <> INVALID_MODULEHANDLE then
-  begin
-    FreeLibrary(Cardinal(CUDAHandle));
-    CUDAHandle := INVALID_MODULEHANDLE;
-  end;
-end;
-
-function InitCUDAFromLibrary(const LibName: WideString): Boolean;
-var
-  V: Integer;
-begin
-  Result := False;
-  CloseCUDA;
-  CUDAHandle := GetModuleHandleW(PWideChar(LibName));
-  if CUDAHandle = INVALID_MODULEHANDLE then
-    CUDAHandle := LoadLibraryW(PWideChar(LibName));
-
-  if CUDAHandle = INVALID_MODULEHANDLE then
-    Exit;
-	
-{$IFNDEF CUDA_DEBUG_MODE}
-
-  cuInit := GetProcAddressCUDA(cuInitName);
-  cuDriverGetVersion := GetProcAddressCUDA(cuDriverGetVersionName);
-  cuDeviceGet := GetProcAddressCUDA(cuDeviceGet_Name);
-  cuDeviceGetCount := GetProcAddressCUDA(cuDeviceGetCountName);
-  cuDeviceGetName := GetProcAddressCUDA(cuDeviceGetNameName);
-  cuDeviceComputeCapability := GetProcAddressCUDA
-    (cuDeviceComputeCapabilityName);
-  cuDeviceTotalMem := GetProcAddressCUDA(cuDeviceTotalMemName);
-  cuDeviceGetProperties := GetProcAddressCUDA(cuDeviceGetPropertiesName);
-  cuDeviceGetAttribute := GetProcAddressCUDA(cuDeviceGetAttributeName);
-  cuCtxCreate := GetProcAddressCUDA(cuCtxCreateName);
-  cuCtxDestroy := GetProcAddressCUDA(cuCtxDestroyName);
-  cuCtxAttach := GetProcAddressCUDA(cuCtxAttachName);
-  cuCtxDetach := GetProcAddressCUDA(cuCtxDetachName);
-  cuCtxPushCurrent := GetProcAddressCUDA(cuCtxPushCurrentName);
-  cuCtxPopCurrent := GetProcAddressCUDA(cuCtxPopCurrentName);
-  cuCtxGetDevice := GetProcAddressCUDA(cuCtxGetDeviceName);
-  cuCtxSynchronize := GetProcAddressCUDA(cuCtxSynchronizeName);
-  cuModuleLoad := GetProcAddressCUDA(cuModuleLoadName);
-  cuModuleLoadData := GetProcAddressCUDA(cuModuleLoadDataName);
-  cuModuleLoadDataEx := GetProcAddressCUDA(cuModuleLoadDataExName);
-  cuModuleLoadFatBinary := GetProcAddressCUDA(cuModuleLoadFatBinaryName);
-  cuModuleUnload := GetProcAddressCUDA(cuModuleUnloadName);
-  cuModuleGetFunction := GetProcAddressCUDA(cuModuleGetFunctionName);
-  cuModuleGetGlobal := GetProcAddressCUDA(cuModuleGetGlobalName);
-  cuModuleGetTexRef := GetProcAddressCUDA(cuModuleGetTexRefName);
-  cuMemGetInfo := GetProcAddressCUDA(cuMemGetInfoName);
-  cuMemAlloc := GetProcAddressCUDA(cuMemAllocName);
-  cuMemAllocPitch := GetProcAddressCUDA(cuMemAllocPitchName);
-  cuMemFree := GetProcAddressCUDA(cuMemFreeName);
-  cuMemGetAddressRange := GetProcAddressCUDA(cuMemGetAddressRangeName);
-  cuMemAllocHost := GetProcAddressCUDA(cuMemAllocHostName);
-  cuMemFreeHost := GetProcAddressCUDA(cuMemFreeHostName);
-  cuMemHostAlloc := GetProcAddressCUDA(cuMemHostAllocName);
-  cuMemHostGetDevicePointer := GetProcAddressCUDA
-    (cuMemHostGetDevicePointerName);
-  cuMemHostGetFlags := GetProcAddressCUDA(cuMemHostGetFlagsName);
-  cuMemcpyHtoD := GetProcAddressCUDA(cuMemcpyHtoDName);
-  cuMemcpyDtoH := GetProcAddressCUDA(cuMemcpyDtoHName);
-  cuMemcpyDtoD := GetProcAddressCUDA(cuMemcpyDtoDName);
-  cuMemcpyDtoDAsync := GetProcAddressCUDA(cuMemcpyDtoDAsyncName);
-  cuMemcpyDtoA := GetProcAddressCUDA(cuMemcpyDtoAName);
-  cuMemcpyAtoD := GetProcAddressCUDA(cuMemcpyAtoDName);
-  cuMemcpyHtoA := GetProcAddressCUDA(cuMemcpyHtoAName);
-  cuMemcpyAtoH := GetProcAddressCUDA(cuMemcpyAtoHName);
-  cuMemcpyAtoA := GetProcAddressCUDA(cuMemcpyAtoAName);
-  cuMemcpy2D := GetProcAddressCUDA(cuMemcpy2DName);
-  cuMemcpy2DUnaligned := GetProcAddressCUDA(cuMemcpy2DUnalignedName);
-  cuMemcpy3D := GetProcAddressCUDA(cuMemcpy3DName);
-  cuMemcpyHtoDAsync := GetProcAddressCUDA(cuMemcpyHtoDAsyncName);
-  cuMemcpyDtoHAsync := GetProcAddressCUDA(cuMemcpyDtoHAsyncName);
-  cuMemcpyHtoAAsync := GetProcAddressCUDA(cuMemcpyHtoAAsyncName);
-  cuMemcpyAtoHAsync := GetProcAddressCUDA(cuMemcpyAtoHAsyncName);
-  cuMemcpy2DAsync := GetProcAddressCUDA(cuMemcpy2DAsyncName);
-  cuMemcpy3DAsync := GetProcAddressCUDA(cuMemcpy3DAsyncName);
-  cuMemsetD8 := GetProcAddressCUDA(cuMemsetD8Name);
-  cuMemsetD16 := GetProcAddressCUDA(cuMemsetD16Name);
-  cuMemsetD32 := GetProcAddressCUDA(cuMemsetD32Name);
-  cuMemsetD2D8 := GetProcAddressCUDA(cuMemsetD2D8Name);
-  cuMemsetD2D16 := GetProcAddressCUDA(cuMemsetD2D16Name);
-  cuMemsetD2D32 := GetProcAddressCUDA(cuMemsetD2D32Name);
-  cuFuncSetBlockShape := GetProcAddressCUDA(cuFuncSetBlockShapeName);
-  cuFuncSetSharedSize := GetProcAddressCUDA(cuFuncSetSharedSizeName);
-  cuFuncGetAttribute := GetProcAddressCUDA(cuFuncGetAttributeName);
-  cuArrayCreate := GetProcAddressCUDA(cuArrayCreateName);
-  cuArrayGetDescriptor := GetProcAddressCUDA(cuArrayGetDescriptorName);
-  cuArrayDestroy := GetProcAddressCUDA(cuArrayDestroyName);
-  cuArray3DCreate := GetProcAddressCUDA(cuArray3DCreateName);
-  cuArray3DGetDescriptor := GetProcAddressCUDA(cuArray3DGetDescriptorName);
-  cuTexRefCreate := GetProcAddressCUDA(cuTexRefCreateName);
-  cuTexRefDestroy := GetProcAddressCUDA(cuTexRefDestroyName);
-  cuTexRefSetArray := GetProcAddressCUDA(cuTexRefSetArrayName);
-  cuTexRefSetAddress := GetProcAddressCUDA(cuTexRefSetAddressName);
-  cuTexRefSetAddress2D := GetProcAddressCUDA(cuTexRefSetAddress2DName);
-  cuTexRefSetFormat := GetProcAddressCUDA(cuTexRefSetFormatName);
-  cuTexRefSetAddressMode := GetProcAddressCUDA(cuTexRefSetAddressModeName);
-  cuTexRefSetFilterMode := GetProcAddressCUDA(cuTexRefSetFilterModeName);
-  cuTexRefSetFlags := GetProcAddressCUDA(cuTexRefSetFlagsName);
-  cuTexRefGetAddress := GetProcAddressCUDA(cuTexRefGetAddressName);
-  cuTexRefGetArray := GetProcAddressCUDA(cuTexRefGetArrayName);
-  cuTexRefGetAddressMode := GetProcAddressCUDA(cuTexRefGetAddressModeName);
-  cuTexRefGetFilterMode := GetProcAddressCUDA(cuTexRefGetFilterModeName);
-  cuTexRefGetFormat := GetProcAddressCUDA(cuTexRefGetFormatName);
-  cuTexRefGetFlags := GetProcAddressCUDA(cuTexRefGetFlagsName);
-  cuParamSetSize := GetProcAddressCUDA(cuParamSetSizeName);
-  cuParamSeti := GetProcAddressCUDA(cuParamSetiName);
-  cuParamSetf := GetProcAddressCUDA(cuParamSetfName);
-  cuParamSetv := GetProcAddressCUDA(cuParamSetvName);
-  cuParamSetTexRef := GetProcAddressCUDA(cuParamSetTexRefName);
-  cuLaunch := GetProcAddressCUDA(cuLaunchName);
-  cuLaunchGrid := GetProcAddressCUDA(cuLaunchGridName);
-  cuLaunchGridAsync := GetProcAddressCUDA(cuLaunchGridAsyncName);
-  cuEventCreate := GetProcAddressCUDA(cuEventCreateName);
-  cuEventRecord := GetProcAddressCUDA(cuEventRecordName);
-  cuEventQuery := GetProcAddressCUDA(cuEventQueryName);
-  cuEventSynchronize := GetProcAddressCUDA(cuEventSynchronizeName);
-  cuEventDestroy := GetProcAddressCUDA(cuEventDestroyName);
-  cuEventElapsedTime := GetProcAddressCUDA(cuEventElapsedTimeName);
-  cuStreamCreate := GetProcAddressCUDA(cuStreamCreateName);
-  cuStreamQuery := GetProcAddressCUDA(cuStreamQueryName);
-  cuStreamSynchronize := GetProcAddressCUDA(cuStreamSynchronizeName);
-  cuStreamDestroy := GetProcAddressCUDA(cuStreamDestroyName);
-  cuGLCtxCreate := GetProcAddressCUDA(cuGLCtxCreateName);
-  cuGraphicsGLRegisterBuffer := GetProcAddressCUDA
-    (cuGraphicsGLRegisterBufferName);
-  cuGraphicsGLRegisterImage := GetProcAddressCUDA
-    (cuGraphicsGLRegisterImageName);
-  cuWGLGetDevice := GetProcAddressCUDA(cuWGLGetDeviceName);
-  cuGraphicsUnregisterResource :=
-    GetProcAddressCUDA(cuGraphicsUnregisterResourceName);
-  cuGraphicsSubResourceGetMappedArray :=
-    GetProcAddressCUDA(cuGraphicsSubResourceGetMappedArrayName);
-  cuGraphicsResourceGetMappedPointer :=
-    GetProcAddressCUDA(cuGraphicsResourceGetMappedPointerName);
-  cuGraphicsResourceSetMapFlags :=
-    GetProcAddressCUDA(cuGraphicsResourceSetMapFlagsName);
-  cuGraphicsMapResources := GetProcAddressCUDA(cuGraphicsMapResourcesName);
-  cuGraphicsUnmapResources := GetProcAddressCUDA(cuGraphicsUnmapResourcesName);
-  cuGLInit := GetProcAddressCUDA(cuGLInitName);
-  cuGLRegisterBufferObject := GetProcAddressCUDA(cuGLRegisterBufferObjectName);
-  cuGLMapBufferObject := GetProcAddressCUDA(cuGLMapBufferObjectName);
-  cuGLUnmapBufferObject := GetProcAddressCUDA(cuGLUnmapBufferObjectName);
-  cuGLUnregisterBufferObject := GetProcAddressCUDA
-    (cuGLUnregisterBufferObjectName);
-  cuGLSetBufferObjectMapFlags :=
-    GetProcAddressCUDA(cuGLSetBufferObjectMapFlagsName);
-  cuGLMapBufferObjectAsync := GetProcAddressCUDA(cuGLMapBufferObjectAsyncName);
-  cuGLUnmapBufferObjectAsync := GetProcAddressCUDA
-    (cuGLUnmapBufferObjectAsyncName);
-{$ELSE}
-  cuInit_ := GetProcAddressCUDA(cuInitName);
-  cuInit := cuInitShell;
-  cuDriverGetVersion_ := GetProcAddressCUDA(cuDriverGetVersionName);
-  cuDriverGetVersion := cuDriverGetVersionShell;
-  cuDeviceGet_ := GetProcAddressCUDA(cuDeviceGet_Name);
-  cuDeviceGet := cuDeviceGetShell;
-  cuDeviceGetCount_ := GetProcAddressCUDA(cuDeviceGetCountName);
-  cuDeviceGetCount := cuDeviceGetCountShell;
-  cuDeviceGetName_ := GetProcAddressCUDA(cuDeviceGetNameName);
-  cuDeviceGetName := cuDeviceGetNameShell;
-  cuDeviceComputeCapability_ := GetProcAddressCUDA
-    (cuDeviceComputeCapabilityName);
-  cuDeviceComputeCapability := cuDeviceComputeCapabilityShell;
-  cuDeviceTotalMem_ := GetProcAddressCUDA(cuDeviceTotalMemName);
-  cuDeviceTotalMem := cuDeviceTotalMemShell;
-  cuDeviceGetProperties_ := GetProcAddressCUDA(cuDeviceGetPropertiesName);
-  cuDeviceGetProperties := cuDeviceGetPropertiesShell;
-  cuDeviceGetAttribute_ := GetProcAddressCUDA(cuDeviceGetAttributeName);
-  cuDeviceGetAttribute := cuDeviceGetAttributeShell;
-  cuCtxCreate_ := GetProcAddressCUDA(cuCtxCreateName);
-  cuCtxCreate := cuCtxCreateShell;
-  cuCtxDestroy_ := GetProcAddressCUDA(cuCtxDestroyName);
-  cuCtxDestroy := cuCtxDestroyShell;
-  cuCtxAttach_ := GetProcAddressCUDA(cuCtxAttachName);
-  cuCtxAttach := cuCtxAttachShell;
-  cuCtxDetach_ := GetProcAddressCUDA(cuCtxDetachName);
-  cuCtxDetach := cuCtxDetachShell;
-  cuCtxPushCurrent_ := GetProcAddressCUDA(cuCtxPushCurrentName);
-  cuCtxPushCurrent := cuCtxPushCurrentShell;
-  cuCtxPopCurrent_ := GetProcAddressCUDA(cuCtxPopCurrentName);
-  cuCtxPopCurrent := cuCtxPopCurrentShell;
-  cuCtxGetDevice_ := GetProcAddressCUDA(cuCtxGetDeviceName);
-  cuCtxGetDevice := cuCtxGetDeviceShell;
-  cuCtxSynchronize_ := GetProcAddressCUDA(cuCtxSynchronizeName);
-  cuCtxSynchronize := cuCtxSynchronizeShell;
-  cuModuleLoad_ := GetProcAddressCUDA(cuModuleLoadName);
-  cuModuleLoad := cuModuleLoadShell;
-  cuModuleLoadData_ := GetProcAddressCUDA(cuModuleLoadDataName);
-  cuModuleLoadData := cuModuleLoadDataShell;
-  cuModuleLoadDataEx_ := GetProcAddressCUDA(cuModuleLoadDataExName);
-  cuModuleLoadDataEx := cuModuleLoadDataExShell;
-  cuModuleLoadFatBinary_ := GetProcAddressCUDA(cuModuleLoadFatBinaryName);
-  cuModuleLoadFatBinary := cuModuleLoadFatBinaryShell;
-  cuModuleUnload_ := GetProcAddressCUDA(cuModuleUnloadName);
-  cuModuleUnload := cuModuleUnloadShell;
-  cuModuleGetFunction_ := GetProcAddressCUDA(cuModuleGetFunctionName);
-  cuModuleGetFunction := cuModuleGetFunctionShell;
-  cuModuleGetGlobal_ := GetProcAddressCUDA(cuModuleGetGlobalName);
-  cuModuleGetGlobal := cuModuleGetGlobalShell;
-  cuModuleGetTexRef_ := GetProcAddressCUDA(cuModuleGetTexRefName);
-  cuModuleGetTexRef := cuModuleGetTexRefShell;
-  cuMemGetInfo_ := GetProcAddressCUDA(cuMemGetInfoName);
-  cuMemGetInfo := cuMemGetInfoShell;
-  cuMemAlloc_ := GetProcAddressCUDA(cuMemAllocName);
-  cuMemAlloc := cuMemAllocShell;
-  cuMemAllocPitch_ := GetProcAddressCUDA(cuMemAllocPitchName);
-  cuMemAllocPitch := cuMemAllocPitchShell;
-  cuMemFree_ := GetProcAddressCUDA(cuMemFreeName);
-  cuMemFree := cuMemFreeShell;
-  cuMemGetAddressRange_ := GetProcAddressCUDA(cuMemGetAddressRangeName);
-  cuMemGetAddressRange := cuMemGetAddressRangeShell;
-  cuMemAllocHost_ := GetProcAddressCUDA(cuMemAllocHostName);
-  cuMemAllocHost := cuMemAllocHostShell;
-  cuMemFreeHost_ := GetProcAddressCUDA(cuMemFreeHostName);
-  cuMemFreeHost := cuMemFreeHostShell;
-  cuMemHostAlloc_ := GetProcAddressCUDA(cuMemHostAllocName);
-  cuMemHostAlloc := cuMemHostAllocShell;
-  cuMemHostGetDevicePointer_ := GetProcAddressCUDA
-    (cuMemHostGetDevicePointerName);
-  cuMemHostGetDevicePointer := cuMemHostGetDevicePointerShell;
-  cuMemHostGetFlags_ := GetProcAddressCUDA(cuMemHostGetFlagsName);
-  cuMemHostGetFlags := cuMemHostGetFlagsShell;
-  cuMemcpyHtoD_ := GetProcAddressCUDA(cuMemcpyHtoDName);
-  cuMemcpyHtoD := cuMemcpyHtoDShell;
-  cuMemcpyDtoH_ := GetProcAddressCUDA(cuMemcpyDtoHName);
-  cuMemcpyDtoH := cuMemcpyDtoHShell;
-  cuMemcpyDtoD_ := GetProcAddressCUDA(cuMemcpyDtoDName);
-  cuMemcpyDtoD := cuMemcpyDtoDShell;
-  cuMemcpyDtoDAsync_ := GetProcAddressCUDA(cuMemcpyDtoDAsyncName);
-  cuMemcpyDtoDAsync := cuMemcpyDtoDAsyncShell;
-  cuMemcpyDtoA_ := GetProcAddressCUDA(cuMemcpyDtoAName);
-  cuMemcpyDtoA := cuMemcpyDtoAShell;
-  cuMemcpyAtoD_ := GetProcAddressCUDA(cuMemcpyAtoDName);
-  cuMemcpyAtoD := cuMemcpyAtoDShell;
-  cuMemcpyHtoA_ := GetProcAddressCUDA(cuMemcpyHtoAName);
-  cuMemcpyHtoA := cuMemcpyHtoAShell;
-  cuMemcpyAtoH_ := GetProcAddressCUDA(cuMemcpyAtoHName);
-  cuMemcpyAtoH := cuMemcpyAtoHShell;
-  cuMemcpyAtoA_ := GetProcAddressCUDA(cuMemcpyAtoAName);
-  cuMemcpyAtoA := cuMemcpyAtoAShell;
-  cuMemcpy2D_ := GetProcAddressCUDA(cuMemcpy2DName);
-  cuMemcpy2D := cuMemcpy2DShell;
-  cuMemcpy2DUnaligned_ := GetProcAddressCUDA(cuMemcpy2DUnalignedName);
-  cuMemcpy2DUnaligned := cuMemcpy2DUnalignedShell;
-  cuMemcpy3D_ := GetProcAddressCUDA(cuMemcpy3DName);
-  cuMemcpy3D := cuMemcpy3DShell;
-  cuMemcpyHtoDAsync_ := GetProcAddressCUDA(cuMemcpyHtoDAsyncName);
-  cuMemcpyHtoDAsync := cuMemcpyHtoDAsyncShell;
-  cuMemcpyDtoHAsync_ := GetProcAddressCUDA(cuMemcpyDtoHAsyncName);
-  cuMemcpyDtoHAsync := cuMemcpyDtoHAsyncShell;
-  cuMemcpyHtoAAsync_ := GetProcAddressCUDA(cuMemcpyHtoAAsyncName);
-  cuMemcpyHtoAAsync := cuMemcpyHtoAAsyncShell;
-  cuMemcpyAtoHAsync_ := GetProcAddressCUDA(cuMemcpyAtoHAsyncName);
-  cuMemcpyAtoHAsync := cuMemcpyAtoHAsyncShell;
-  cuMemcpy2DAsync_ := GetProcAddressCUDA(cuMemcpy2DAsyncName);
-  cuMemcpy2DAsync := cuMemcpy2DAsyncShell;
-  cuMemcpy3DAsync_ := GetProcAddressCUDA(cuMemcpy3DAsyncName);
-  cuMemcpy3DAsync := cuMemcpy3DAsyncShell;
-  cuMemsetD8_ := GetProcAddressCUDA(cuMemsetD8Name);
-  cuMemsetD8 := cuMemsetD8Shell;
-  cuMemsetD16_ := GetProcAddressCUDA(cuMemsetD16Name);
-  cuMemsetD16 := cuMemsetD16Shell;
-  cuMemsetD32_ := GetProcAddressCUDA(cuMemsetD32Name);
-  cuMemsetD32 := cuMemsetD32Shell;
-  cuMemsetD2D8_ := GetProcAddressCUDA(cuMemsetD2D8Name);
-  cuMemsetD2D8 := cuMemsetD2D8Shell;
-  cuMemsetD2D16_ := GetProcAddressCUDA(cuMemsetD2D16Name);
-  cuMemsetD2D16 := cuMemsetD2D16Shell;
-  cuMemsetD2D32_ := GetProcAddressCUDA(cuMemsetD2D32Name);
-  cuMemsetD2D32 := cuMemsetD2D32Shell;
-  cuFuncSetBlockShape_ := GetProcAddressCUDA(cuFuncSetBlockShapeName);
-  cuFuncSetBlockShape := cuFuncSetBlockShapeShell;
-  cuFuncSetSharedSize_ := GetProcAddressCUDA(cuFuncSetSharedSizeName);
-  cuFuncSetSharedSize := cuFuncSetSharedSizeShell;
-  cuFuncGetAttribute_ := GetProcAddressCUDA(cuFuncGetAttributeName);
-  cuFuncGetAttribute := cuFuncGetAttributeShell;
-  cuArrayCreate_ := GetProcAddressCUDA(cuArrayCreateName);
-  cuArrayCreate := cuArrayCreateShell;
-  cuArrayGetDescriptor_ := GetProcAddressCUDA(cuArrayGetDescriptorName);
-  cuArrayGetDescriptor := cuArrayGetDescriptorShell;
-  cuArrayDestroy_ := GetProcAddressCUDA(cuArrayDestroyName);
-  cuArrayDestroy := cuArrayDestroyShell;
-  cuArray3DCreate_ := GetProcAddressCUDA(cuArray3DCreateName);
-  cuArray3DCreate := cuArray3DCreateShell;
-  cuArray3DGetDescriptor_ := GetProcAddressCUDA(cuArray3DGetDescriptorName);
-  cuArray3DGetDescriptor := cuArray3DGetDescriptorShell;
-  cuTexRefCreate_ := GetProcAddressCUDA(cuTexRefCreateName);
-  cuTexRefCreate := cuTexRefCreateShell;
-  cuTexRefDestroy_ := GetProcAddressCUDA(cuTexRefDestroyName);
-  cuTexRefDestroy := cuTexRefDestroyShell;
-  cuTexRefSetArray_ := GetProcAddressCUDA(cuTexRefSetArrayName);
-  cuTexRefSetArray := cuTexRefSetArrayShell;
-  cuTexRefSetAddress_ := GetProcAddressCUDA(cuTexRefSetAddressName);
-  cuTexRefSetAddress := cuTexRefSetAddressShell;
-  cuTexRefSetAddress2D_ := GetProcAddressCUDA(cuTexRefSetAddress2DName);
-  cuTexRefSetAddress2D := cuTexRefSetAddress2DShell;
-  cuTexRefSetFormat_ := GetProcAddressCUDA(cuTexRefSetFormatName);
-  cuTexRefSetFormat := cuTexRefSetFormatShell;
-  cuTexRefSetAddressMode_ := GetProcAddressCUDA(cuTexRefSetAddressModeName);
-  cuTexRefSetAddressMode := cuTexRefSetAddressModeShell;
-  cuTexRefSetFilterMode_ := GetProcAddressCUDA(cuTexRefSetFilterModeName);
-  cuTexRefSetFilterMode := cuTexRefSetFilterModeShell;
-  cuTexRefSetFlags_ := GetProcAddressCUDA(cuTexRefSetFlagsName);
-  cuTexRefSetFlags := cuTexRefSetFlagsShell;
-  cuTexRefGetAddress_ := GetProcAddressCUDA(cuTexRefGetAddressName);
-  cuTexRefGetAddress := cuTexRefGetAddressShell;
-  cuTexRefGetArray_ := GetProcAddressCUDA(cuTexRefGetArrayName);
-  cuTexRefGetArray := cuTexRefGetArrayShell;
-  cuTexRefGetAddressMode_ := GetProcAddressCUDA(cuTexRefGetAddressModeName);
-  cuTexRefGetAddressMode := cuTexRefGetAddressModeShell;
-  cuTexRefGetFilterMode_ := GetProcAddressCUDA(cuTexRefGetFilterModeName);
-  cuTexRefGetFilterMode := cuTexRefGetFilterModeShell;
-  cuTexRefGetFormat_ := GetProcAddressCUDA(cuTexRefGetFormatName);
-  cuTexRefGetFormat := cuTexRefGetFormatShell;
-  cuTexRefGetFlags_ := GetProcAddressCUDA(cuTexRefGetFlagsName);
-  cuTexRefGetFlags := cuTexRefGetFlagsShell;
-  cuParamSetSize_ := GetProcAddressCUDA(cuParamSetSizeName);
-  cuParamSetSize := cuParamSetSizeShell;
-  cuParamSeti_ := GetProcAddressCUDA(cuParamSetiName);
-  cuParamSeti := cuParamSetiShell;
-  cuParamSetf_ := GetProcAddressCUDA(cuParamSetfName);
-  cuParamSetf := cuParamSetfShell;
-  cuParamSetv_ := GetProcAddressCUDA(cuParamSetvName);
-  cuParamSetv := cuParamSetvShell;
-  cuParamSetTexRef_ := GetProcAddressCUDA(cuParamSetTexRefName);
-  cuParamSetTexRef := cuParamSetTexRefShell;
-  cuLaunch_ := GetProcAddressCUDA(cuLaunchName);
-  cuLaunch := cuLaunchShell;
-  cuLaunchGrid_ := GetProcAddressCUDA(cuLaunchGridName);
-  cuLaunchGrid := cuLaunchGridShell;
-  cuLaunchGridAsync_ := GetProcAddressCUDA(cuLaunchGridAsyncName);
-  cuLaunchGridAsync := cuLaunchGridAsyncShell;
-  cuEventCreate_ := GetProcAddressCUDA(cuEventCreateName);
-  cuEventCreate := cuEventCreateShell;
-  cuEventRecord_ := GetProcAddressCUDA(cuEventRecordName);
-  cuEventRecord := cuEventRecordShell;
-  cuEventQuery_ := GetProcAddressCUDA(cuEventQueryName);
-  cuEventQuery := cuEventQueryShell;
-  cuEventSynchronize_ := GetProcAddressCUDA(cuEventSynchronizeName);
-  cuEventSynchronize := cuEventSynchronizeShell;
-  cuEventDestroy_ := GetProcAddressCUDA(cuEventDestroyName);
-  cuEventDestroy := cuEventDestroyShell;
-  cuEventElapsedTime_ := GetProcAddressCUDA(cuEventElapsedTimeName);
-  cuEventElapsedTime := cuEventElapsedTimeShell;
-  cuStreamCreate_ := GetProcAddressCUDA(cuStreamCreateName);
-  cuStreamCreate := cuStreamCreateShell;
-  cuStreamQuery_ := GetProcAddressCUDA(cuStreamQueryName);
-  cuStreamQuery := cuStreamQueryShell;
-  cuStreamSynchronize_ := GetProcAddressCUDA(cuStreamSynchronizeName);
-  cuStreamSynchronize := cuStreamSynchronizeShell;
-  cuStreamDestroy_ := GetProcAddressCUDA(cuStreamDestroyName);
-  cuStreamDestroy := cuStreamDestroyShell;
-  cuGLCtxCreate_ := GetProcAddressCUDA(cuGLCtxCreateName);
-  cuGLCtxCreate := cuGLCtxCreateShell;
-  cuGraphicsGLRegisterBuffer_ :=
-    GetProcAddressCUDA(cuGraphicsGLRegisterBufferName);
-  cuGraphicsGLRegisterBuffer := cuGraphicsGLRegisterBufferShell;
-  cuGraphicsGLRegisterImage_ := GetProcAddressCUDA
-    (cuGraphicsGLRegisterImageName);
-  cuGraphicsGLRegisterImage := cuGraphicsGLRegisterImageShell;
-  cuWGLGetDevice_ := GetProcAddressCUDA(cuWGLGetDeviceName);
-  cuWGLGetDevice := cuWGLGetDeviceShell;
-  cuGraphicsUnregisterResource_ :=
-    GetProcAddressCUDA(cuGraphicsUnregisterResourceName);
-  cuGraphicsUnregisterResource := cuGraphicsUnregisterResourceShell;
-  cuGraphicsSubResourceGetMappedArray_ :=
-    GetProcAddressCUDA(cuGraphicsSubResourceGetMappedArrayName);
-  cuGraphicsSubResourceGetMappedArray :=
-    cuGraphicsSubResourceGetMappedArrayShell;
-  cuGraphicsResourceGetMappedPointer_ :=
-    GetProcAddressCUDA(cuGraphicsResourceGetMappedPointerName);
-  cuGraphicsResourceGetMappedPointer := cuGraphicsResourceGetMappedPointerShell;
-  cuGraphicsResourceSetMapFlags_ :=
-    GetProcAddressCUDA(cuGraphicsResourceSetMapFlagsName);
-  cuGraphicsResourceSetMapFlags := cuGraphicsResourceSetMapFlagsShell;
-  cuGraphicsMapResources_ := GetProcAddressCUDA(cuGraphicsMapResourcesName);
-  cuGraphicsMapResources := cuGraphicsMapResourcesShell;
-  cuGraphicsUnmapResources_ := GetProcAddressCUDA(cuGraphicsUnmapResourcesName);
-  cuGraphicsUnmapResources := cuGraphicsUnmapResourcesShell;
-  cuGLInit := GetProcAddressCUDA(cuGLInitName);
-  cuGLRegisterBufferObject_ := GetProcAddressCUDA(cuGLRegisterBufferObjectName);
-  cuGLRegisterBufferObject := cuGLRegisterBufferObjectShell;
-  cuGLMapBufferObject_ := GetProcAddressCUDA(cuGLMapBufferObjectName);
-  cuGLMapBufferObject := cuGLMapBufferObjectShell;
-  cuGLUnmapBufferObject_ := GetProcAddressCUDA(cuGLUnmapBufferObjectName);
-  cuGLUnmapBufferObject := cuGLUnmapBufferObjectShell;
-  cuGLUnregisterBufferObject_ :=
-    GetProcAddressCUDA(cuGLUnregisterBufferObjectName);
-  cuGLUnregisterBufferObject := cuGLUnregisterBufferObjectShell;
-  cuGLSetBufferObjectMapFlags_ :=
-    GetProcAddressCUDA(cuGLSetBufferObjectMapFlagsName);
-  cuGLSetBufferObjectMapFlags := cuGLSetBufferObjectMapFlagsShell;
-  cuGLMapBufferObjectAsync_ := GetProcAddressCUDA(cuGLMapBufferObjectAsyncName);
-  cuGLMapBufferObjectAsync := cuGLMapBufferObjectAsyncShell;
-  cuGLUnmapBufferObjectAsync_ :=
-    GetProcAddressCUDA(cuGLUnmapBufferObjectAsyncName);
-  cuGLUnmapBufferObjectAsync := cuGLUnmapBufferObjectAsyncShell;
-{$ENDIF USE_CUDA_DEBUG_MODE}
-  cuDriverGetVersion(V);
-  ShowMessage(Format('%s version %d is loaded', [CUDAAPIDLL, V]));
-  Result := True;
-end;
-
-function IsCUDAInitialized: Boolean;
-begin
-  Result := (CUDAHandle <> INVALID_MODULEHANDLE);
-end;
-
-function Get_CUDA_API_Error_String(AError: TCUresult): string;
-begin
-  if AError = CUDA_SUCCESS then
-    Result := 'No errors'
-  else if AError = CUDA_ERROR_INVALID_VALUE then
-    Result := 'Invalid value'
-  else if AError = CUDA_ERROR_OUT_OF_MEMORY then
-    Result := 'Out of memory'
-  else if AError = CUDA_ERROR_NOT_INITIALIZED then
-    Result := 'Driver not initialized'
-  else if AError = CUDA_ERROR_DEINITIALIZED then
-    Result := 'Driver deinitialized'
-  else if AError = CUDA_ERROR_NO_DEVICE then
-    Result := 'No CUDA-capable device available'
-  else if AError = CUDA_ERROR_INVALID_DEVICE then
-    Result := 'Invalid device'
-  else if AError = CUDA_ERROR_INVALID_IMAGE then
-    Result := 'Invalid kernel image'
-  else if AError = CUDA_ERROR_INVALID_CONTEXT then
-    Result := 'Invalid context'
-  else if AError = CUDA_ERROR_CONTEXT_ALREADY_CURRENT then
-    Result := 'Context already current'
-  else if AError = CUDA_ERROR_MAP_FAILED then
-    Result := 'Map failed'
-  else if AError = CUDA_ERROR_UNMAP_FAILED then
-    Result := 'Unmap failed'
-  else if AError = CUDA_ERROR_ARRAY_IS_MAPPED then
-    Result := 'Array is mapped'
-  else if AError = CUDA_ERROR_ALREADY_MAPPED then
-    Result := 'Already mapped'
-  else if AError = CUDA_ERROR_NO_BINARY_FOR_GPU then
-    Result := 'No binary for GPU'
-  else if AError = CUDA_ERROR_ALREADY_ACQUIRED then
-    Result := 'Already acquired'
-  else if AError = CUDA_ERROR_NOT_MAPPED then
-    Result := 'Not mapped'
-  else if AError = CUDA_ERROR_NOT_MAPPED_AS_ARRAY then
-    Result := 'Not mapped as array'
-  else if AError = CUDA_ERROR_NOT_MAPPED_AS_POINTER then
-    Result := 'Not mapped as pointer'
-  else if AError = CUDA_ERROR_INVALID_SOURCE then
-    Result := 'Invalid source'
-  else if AError = CUDA_ERROR_FILE_NOT_FOUND then
-    Result := 'File not found'
-  else if AError = CUDA_ERROR_INVALID_HANDLE then
-    Result := 'Invalid handle'
-  else if AError = CUDA_ERROR_NOT_FOUND then
-    Result := 'Not found'
-  else if AError = CUDA_ERROR_NOT_READY then
-    Result := 'CUDA not ready'
-  else if AError = CUDA_ERROR_LAUNCH_FAILED then
-    Result := 'Launch failed'
-  else if AError = CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES then
-    Result := 'Launch exceeded resources'
-  else if AError = CUDA_ERROR_LAUNCH_TIMEOUT then
-    Result := 'Launch exceeded timeout'
-  else if AError = CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING then
-    Result := 'Launch with incompatible texturing'
-  else if AError = CUDA_ERROR_POINTER_IS_64BIT then
-    Result := 'Pointer is 64bit'
-  else if AError = CUDA_ERROR_SIZE_IS_64BIT then
-    Result := 'Size is 64bit'
-  else
-    Result := 'Unknown error';
-end;
-
-end.

+ 0 - 226
Source/FMX/CUDAx.ParallelPrimitives.pas

@@ -1,226 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit CUDAx.ParallelPrimitives;
-
-// -------------------------------------------------------------
-// cuDPP -- CUDA Data Parallel Primitives library
-// -------------------------------------------------------------
-// $Revision: 4562 $
-// $Date: 2010-01-29 00:21:42 +0300 (Fri, 29 Jan 2010) $
-// -------------------------------------------------------------
-// This source code is distributed under the terms of license.txt in
-// the root directory of this source distribution.
-// -------------------------------------------------------------
-
-interface
-
-const
-  CUDPPDLL = 'cudpp32.dll';
-  CUDPP_INVALID_HANDLE = $C0DABAD1;
-
-type
-
-  TCUDPPResult = (
-    CUDPP_SUCCESS, // No error.
-    CUDPP_ERROR_INVALID_HANDLE, // Specified handle (for example,
-    //          to a plan) is invalid.
-    CUDPP_ERROR_ILLEGAL_CONFIGURATION, // Specified configuration is
-    //     illegal. For example, an
-    //     invalid or illogical
-    //     combination of options.
-    CUDPP_ERROR_UNKNOWN // Unknown or untraceable error.
-    );
-
-  TCUDPPOption = (
-    CUDPP_OPTION_FORWARD, // Algorithms operate forward:
-    // from start to end of input
-    // array
-    CUDPP_OPTION_BACKWARD, // Algorithms operate backward:
-    // from end to start of array
-    CUDPP_OPTION_EXCLUSIVE, // Exclusive (for scans) - scan
-    // includes all elements up to (but
-    // not including) the current
-    // element
-    CUDPP_OPTION_INCLUSIVE, // Inclusive (for scans) - scan
-    // includes all elements up to and
-    // including the current element
-    CUDPP_OPTION_CTA_LOCAL, // Algorithm performed only on
-    // the CTAs (blocks) with no
-    // communication between blocks.
-    // @todo Currently ignored.
-    CUDPP_OPTION_KEYS_ONLY, // No associated value to a key
-    // (for global radix sort)
-    CUDPP_OPTION_KEY_VALUE_PAIRS // Each key has an associated value
-    );
-
-  TCUDPPDatatype = (
-    CUDPP_CHAR, // Character type (C char)
-    CUDPP_UCHAR, // Unsigned character (byte) type (C unsigned char)
-    CUDPP_INT, // Integer type (C int)
-    CUDPP_UINT, // Unsigned integer type (C unsigned int)
-    CUDPP_FLOAT // Float type (C float)
-    );
-
-  TCUDPPOperator = (
-    CUDPP_ADD, // Addition of two operands
-    CUDPP_MULTIPLY, // Multiplication of two operands
-    CUDPP_MIN, // Minimum of two operands
-    CUDPP_MAX // Maximum of two operands
-    );
-
-  TCUDPPAlgorithm = (
-    CUDPP_SCAN,
-    CUDPP_SEGMENTED_SCAN,
-    CUDPP_COMPACT,
-    CUDPP_REDUCE,
-    CUDPP_SORT_RADIX,
-    CUDPP_SPMVMULT, // Sparse matrix-dense vector multiplication
-    CUDPP_RAND_MD5, // Pseudo Random Number Generator using MD5 hash algorithm
-    CUDPP_ALGORITHM_INVALID // Placeholder at end of enum
-    );
-
-  TCUDPPConfiguration = record
-    algorithm: TCUDPPAlgorithm; // The algorithm to be used
-    op: TCUDPPOperator; // The numerical operator to be applied
-    datatype: TCUDPPDatatype; // The datatype of the input arrays
-    options: TCUDPPoption; // Options to configure the algorithm
-  end;
-
-  TCUDPPHandle = NativeUInt;
-
-  // Plan allocation (for scan, sort, and compact)
-
-function cudppPlan(var planHandle: TCUDPPHandle;
-  config: TCUDPPConfiguration;
-  n: NativeUInt;
-  rows: NativeUInt;
-  rowPitch: NativeUInt): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-function cudppDestroyPlan(plan: TCUDPPHandle): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-// Scan and sort algorithms
-
-function cudppScan(planHandle: TCUDPPHandle;
-  var d_out;
-  var d_in,
-  numElements: NativeUInt): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-function cudppMultiScan(planHandle: TCUDPPHandle;
-  var d_out;
-  var d_in;
-  numElements: NativeUInt;
-  numRows: NativeUInt): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-function cudppSegmentedScan(planHandle: TCUDPPHandle;
-  var d_out;
-  var d_idata;
-  const d_iflags: PCardinal;
-  numElements: NativeUInt): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-function cudppCompact(planHandle: TCUDPPHandle;
-  var d_out;
-  var d_numValidElements: NativeUInt;
-  var d_in;
-  const d_isValid: PCardinal;
-  numElements: NativeUInt): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-function cudppSort(planHandle: TCUDPPHandle;
-  var d_keys;
-  var d_values;
-  keybits: Integer;
-  numElements: NativeUInt): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-// Sparse matrix allocation
-
-function cudppSparseMatrix(var sparseMatrixHandle: TCUDPPHandle;
-  config: TCUDPPConfiguration;
-  n: NativeUInt;
-  rows: NativeUInt;
-  var A;
-  const h_rowIndices: PCardinal;
-  const h_indices: PCardinal): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-function cudppDestroySparseMatrix(sparseMatrixHandle: TCUDPPHandle):
-  TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-// Sparse matrix-vector algorithms
-
-function cudppSparseMatrixVectorMultiply(sparseMatrixHandle: TCUDPPHandle;
-  var d_y;
-  var d_x): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-// random number generation algorithms
-function cudppRand(planHandle: TCUDPPHandle;
-  var d_out;
-  numElements: NativeUInt): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-function cudppRandSeed(const planHandle: TCUDPPHandle;
-  seed: Cardinal): TCUDPPResult;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-external CUDPPDLL;
-
-//------------------------------
-implementation
-//------------------------------
-
-end.
-

+ 0 - 515
Source/FMX/CUDAx.Parser.pas

@@ -1,515 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit CUDAx.Parser;
-
-(*
-   Helper unit for parsing CU modules and get information about.
-   kernel's functions, textures, shared and constants memory.
-*)
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-
-  GLX.Strings,
-  CUDAx.RunTime;
-
-type
-
-  TCUDAType =
-    (
-    customType,
-    char1,
-    uchar1,
-    char2,
-    uchar2,
-    char3,
-    uchar3,
-    char4,
-    uchar4,
-    short1,
-    ushort1,
-    short2,
-    ushort2,
-    short3,
-    ushort3,
-    short4,
-    ushort4,
-    int1,
-    uint1,
-    int2,
-    uint2,
-    int3,
-    uint3,
-    int4,
-    uint4,
-    long1,
-    ulong1,
-    long2,
-    ulong2,
-    long3,
-    ulong3,
-    long4,
-    ulong4,
-    float1,
-    float2,
-    float3,
-    float4,
-    longlong1,
-    ulonglong1,
-    longlong2,
-    ulonglong2,
-    longlong3,
-    ulonglong3,
-    longlong4,
-    ulonglong4,
-    double1,
-    double2,
-    double3,
-    double4,
-    int8,
-    int16,
-    int32,
-    uint8,
-    uint16,
-    uint32
-    );
-
-  TCUDATexRefInfo = record
-    Name: string;
-    DataType: TCUDAType;
-    Dim: Byte;
-    ReadMode: TcudaTextureReadMode;
-  end;
-
-  TCUDAFuncArgInfo = record
-    Name: string;
-    DataType: TCUDAType;
-    CustomType: string;
-    Ref: Boolean;
-  end;
-
-  TCUDAFuncInfo = record
-    Name: string;
-    KernelName: string;
-    Args: array of TCUDAFuncArgInfo;
-  end;
-
-  TCUDAConstantInfo = record
-    Name: string;
-    DataType: TCUDAType;
-    CustomType: string;
-    Ref: Boolean;
-    DefValue: Boolean;
-  end;
-
-  TCUDAModuleInfo = class(TObject)
-  private
-    ping, pong: TStrings;
-    procedure Reset;
-    procedure BreakStrings(inlist, outlist: TStrings);
-    procedure RemoveComents(inlist, outlist: TStrings);
-    procedure RemoveSpaces(inlist, outlist: TStrings);
-    procedure ReplaceUnsigned(inlist, outlist: TStrings);
-    procedure FindTexRef(inlist: TStrings);
-    procedure FindConst(inlist: TStrings);
-    procedure FindFunc(inlist: TStrings);
-    procedure FindFuncKernelName(inlist: TStrings);
-  public
-    Owner: TComponent;
-    TexRef: array of TCUDATexRefInfo;
-    Func: array of TCUDAFuncInfo;
-    Constant: array of TCUDAConstantInfo;
-
-    constructor Create;
-    destructor Destroy; override;
-
-    procedure ParseModule(ASource, AProduct: TStrings);
-  end;
-
-//----------------------------------------------------------------
-implementation
-//----------------------------------------------------------------
-
-const
-  WordDelimiters: set of AnsiChar = [#0..#255] - ['a'..'z','A'..'Z','1'..'9','0','_'];
-  sCUDAType: array[TCUDAType] of string =
-  (
-    '',
-    'char',
-    'uchar',
-    'char2',
-    'uchar2',
-    'char3',
-    'uchar3',
-    'char4',
-    'uchar4',
-    'short',
-    'ushort',
-    'short2',
-    'ushort2',
-    'short3',
-    'ushort3',
-    'short4',
-    'ushort4',
-    'int',
-    'uint',
-    'int2',
-    'uint2',
-    'int3',
-    'uint3',
-    'int4',
-    'uint4',
-    'long',
-    'ulong',
-    'long2',
-    'ulong2',
-    'long3',
-    'ulong3',
-    'long4',
-    'ulong4',
-    'float',
-    'float2',
-    'float3',
-    'float4',
-    'longlong',
-    'ulonglong',
-    'longlong2',
-    'ulonglong2',
-    'longlong3',
-    'ulonglong3',
-    'longlong4',
-    'ulonglong4',
-    'double',
-    'double2',
-    'double3',
-    'double4',
-    'int8',
-    'int16',
-    'int32',
-    'uint8',
-    'uint16',
-    'uint32'
-    );
-
-function StrToCUDAType(const AToken: string): TCUDAType;
-var
-  T: TCUDAType;
-begin
-  for T := char1 to uint32 do
-    if AToken = sCUDAType[T] then
-    begin
-      exit(T);
-    end;
-  Result := customType;
-end;
-
-procedure TCUDAModuleInfo.BreakStrings(inlist, outlist: TStrings);
-var
-  i: Integer;
-  str, accum: string;
-  c: Char;
-begin
-  str := inlist.Text;
-  outlist.Clear;
-  accum := '';
-
-  for I := 1 to Length(str) do
-  begin
-    c := str[I];
-    if CharInSet(c, WordDelimiters) then
-    begin
-      if Length(accum) > 0 then
-      begin
-        outlist.Add(accum);
-        accum := '';
-      end;
-      outlist.Add(c);
-    end
-    else
-      accum := accum + str[I];
-  end;
-end;
-
-procedure TCUDAModuleInfo.RemoveComents(inlist, outlist: TStrings);
-var
-  bSkipToLineBreak: Boolean;
-  bSkipToRemarkEnd: Boolean;
-  i: Integer;
-  str1, str2: string;
-begin
-  outlist.Clear;
-  bSkipToLineBreak := False;
-  bSkipToRemarkEnd := False;
-  for I := 0 to inlist.Count - 2 do
-  begin
-    str1 := inlist[I];
-    str2 := inlist[I+1];
-
-    if bSkipToLineBreak then
-    begin
-      if (str1 = #13) then
-        bSkipToLineBreak := False;
-      continue;
-    end;
-
-    if bSkipToRemarkEnd then
-    begin
-      if (str1 = '*') and (str2 = '/')  then
-        bSkipToRemarkEnd := False;
-      continue;
-    end;
-
-    if (str1 = '/') and (str2 = '/') then
-    begin
-      bSkipToLineBreak := True;
-      continue;
-    end
-    else if (str1 = '/') and (str2 = '*') then
-    begin
-      bSkipToRemarkEnd := True;
-      continue;
-    end;
-
-    outlist.Add(str1);
-  end;
-end;
-
-procedure TCUDAModuleInfo.RemoveSpaces(inlist, outlist: TStrings);
-var
-  i: Integer;
-begin
-  outlist.Clear;
-  for I := 0 to inlist.Count - 2 do
-    if inlist[i] > #32 then
-      outlist.Add(inlist[i]);
-end;
-
-procedure TCUDAModuleInfo.ReplaceUnsigned(inlist, outlist: TStrings);
-var
-  I: Integer;
-begin
-  outlist.Clear;
-  I := 0;
-  repeat
-    if (inlist[I] = 'unsigned') and (inlist[I+1] = 'int') then
-    begin
-      outlist.Add('uint32');
-      Inc(I);
-    end
-    else
-      outlist.Add(inlist[I]);
-   Inc(I);
-  until I >= inlist.Count;
-end;
-
-procedure TCUDAModuleInfo.FindTexRef(inlist: TStrings);
-var
-  i, p, e: Integer;
-  texInfo: TCUDATexRefInfo;
-begin
-  for I := 0 to inlist.Count - 1 do
-  begin
-    if UpperCase(inlist[i]) = 'TEXTURE' then
-    begin
-      if inlist[i+1] <> '<' then
-        continue;
-      texInfo.DataType := StrToCUDAType(inlist[i+2]);
-      if inlist[i+3] <> ',' then
-        continue;
-      Val(inlist[i+4], texInfo.Dim, e);
-      if e <> 0 then
-        Continue;
-
-      p := 5;
-      if inlist[i+5] = ',' then
-      begin
-        if inlist[i+6] = 'cudaReadModeElementType' then
-          texInfo.ReadMode := cudaReadModeElementType
-        else if inlist[i+6] = 'cudaReadModeNormalizedFloat' then
-          texInfo.ReadMode := cudaReadModeNormalizedFloat
-        else
-          Continue;
-        p := 7;
-      end;
-      if inlist[i+p] <> '>' then
-        continue;
-      texInfo.Name := inlist[i+p+1];
-      SetLength(TexRef, Length(TexRef)+1);
-      TexRef[High(TexRef)] := texInfo;
-    end;
-  end;
-end;
-
-constructor TCUDAModuleInfo.Create;
-begin
-  ping := TStringList.Create;
-  pong := TStringList.Create;
-end;
-
-destructor TCUDAModuleInfo.Destroy;
-begin
-  ping.Destroy;
-  pong.Destroy;
-end;
-
-procedure TCUDAModuleInfo.FindConst(inlist: TStrings);
-var
-  i, p: Integer;
-  constInfo: TCUDAConstantInfo;
-begin
-  for I := 0 to inlist.Count - 1 do
-  begin
-    if UpperCase(inlist[i]) = '__CONSTANT__' then
-    begin
-      p := i+1;
-      if inlist[p] = 'static' then
-        Inc(p);
-      constInfo.DataType := StrToCUDAType(inlist[p]);
-      if constInfo.DataType = customType then
-        constInfo.CustomType := inlist[p]
-      else
-        constInfo.CustomType := '';
-      Inc(p);
-
-      if inlist[p] = '*' then
-      begin
-        constInfo.Ref := True;
-        Inc(p);
-      end
-      else
-        constInfo.Ref := False;
-
-      constInfo.Name := inlist[p];
-      Inc(p);
-      constInfo.DefValue := False;
-      while p < inlist.Count do
-      begin
-        if inlist[p] = '=' then
-        begin
-          constInfo.DefValue := True;
-          break;
-        end
-        else if inlist[p] = ';' then
-          break;
-        Inc(p);
-      end;
-      SetLength(Constant, Length(Constant)+1);
-      Constant[High(Constant)] := constInfo;
-    end;
-  end;
-end;
-
-procedure TCUDAModuleInfo.FindFunc(inlist: TStrings);
-var
-  i, p: Integer;
-  funcInfo: TCUDAFuncInfo;
-  argInfo: TCUDAFuncArgInfo;
-begin
-  for I := 0 to inlist.Count - 1 do
-  begin
-    if UpperCase(inlist[i]) = '__GLOBAL__' then
-    begin
-      if inlist[i+1] <> 'void' then
-        Continue;
-      funcInfo.Name := inlist[i+2];
-      funcInfo.KernelName := '';
-      if inlist[i+3] <> '(' then
-        Continue;
-
-      p := 4;
-      funcInfo.Args := nil;
-      while inlist[i+p] <> ')' do
-      begin
-        if inlist[i+p] = ',' then
-        begin
-          inc(p);
-          Continue;
-        end;
-        argInfo.DataType := StrToCUDAType(inlist[i+p]);
-        if argInfo.DataType = customType then
-          argInfo.CustomType := inlist[i+p]
-        else
-          argInfo.CustomType := '';
-        Inc(p);
-
-        if inlist[i+p] = '*' then
-        begin
-          argInfo.Ref := True;
-          Inc(p);
-        end
-        else
-          argInfo.Ref := False;
-
-        argInfo.Name := inlist[i+p];
-        SetLength(funcInfo.Args, Length(funcInfo.Args)+1);
-        funcInfo.Args[High(funcInfo.Args)] := argInfo;
-        inc(p);
-      end;
-      SetLength(Func, Length(Func)+1);
-      Func[High(Func)] := funcInfo;
-    end;
-  end;
-end;
-
-procedure TCUDAModuleInfo.FindFuncKernelName(inlist: TStrings);
-var
-  I, J, P: Integer;
-  LStr: string;
-begin
-  for J := 0 to inlist.Count - 1 do
-  begin
-    LStr := inlist[J];
-    P := Pos('.entry', LStr);
-    if P > 0 then
-    begin
-      Delete(LStr, 1, P+6);
-      P := Pos(' ', LStr);
-      if P < 1 then
-        continue;
-      LStr := Copy(LStr, 1, P-1);
-      for I := 0 to High(Func) do
-      begin
-        if Pos(Func[I].Name, LStr) > 0 then
-        begin
-          if Length(Func[I].KernelName) > Length(LStr) then
-            continue;
-          Func[I].KernelName := LStr;
-          break;
-        end;
-      end;
-    end;
-  end;
-end;
-
-procedure TCUDAModuleInfo.Reset;
-var
-  i: Integer;
-begin
-  TexRef := nil;
-  Constant:= nil;
-  for I := 0 to High(Func) do
-    Func[I].Args := nil;
-  Func := nil;
-end;
-
-procedure TCUDAModuleInfo.ParseModule(ASource, AProduct: TStrings);
-begin
-  Reset;
-  BreakStrings(ASource, ping);
-  RemoveComents(ping, pong);
-  RemoveSpaces(pong, ping);
-  ReplaceUnsigned(ping, pong);
-  FindTexRef(pong);
-  FindConst(pong);
-  FindFunc(pong);
-  // Double call to confidence
-  FindFuncKernelName(AProduct);
-  FindFuncKernelName(AProduct);
-end;
-
-end.
-

+ 0 - 771
Source/FMX/CUDAx.RunTime.pas

@@ -1,771 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit CUDAx.RunTime;
-
-(*
- * Copyright 1993-2020 NVIDIA Corporation.  All rights reserved.
- *
- * NOTICE TO USER:
- *
- * This source code is subject to NVIDIA ownership rights under U.S. and
- * international Copyright laws.  Users and possessors of this source code
- * are hereby granted a nonexclusive, royalty-free license to use this code
- * in individual and commercial software.
- *
- * NVIDIA MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
- * CODE FOR ANY PURPOSE.  IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR
- * IMPLIED WARRANTY OF ANY KIND.  NVIDIA DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
- * IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL,
- * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
- * OF USE, DATA OR PROFITS,  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION,  ARISING OUT OF OR IN CONNECTION WITH THE USE
- * OR PERFORMANCE OF THIS SOURCE CODE.
- *
- * U.S. Government End Users.   This source code is a "commercial item" as
- * that term is defined at  48 C.F.R. 2.101 (OCT 1995), consisting  of
- * "commercial computer  software"  and "commercial computer software
- * documentation" as such terms are  used in 48 C.F.R. 12.212 (SEPT 1995)
- * and is provided to the U.S. Government only as a commercial end item.
- * Consistent with 48 C.F.R.12.212 and 48 C.F.R. 227.7202-1 through
- * 227.7202-4 (JUNE 1995), all U.S. Government End Users acquire the
- * source code with only those rights set forth herein.
- *
- * Any use of this source code in individual and commercial software must
- * include, in the user documentation and internal comments to the code,
- * the above Disclaimer and U.S. Government End Users Notice.
- *)
-
-interface
-
-{$I GLX.Scene.inc}
-
-uses
-  Winapi.Windows,
-
-  CUDAx.Import;
-
-const
-{$IFDEF WIN32}
-  CUDARTDLLNAMES: array [0 .. 9] of string = (
-    'cudart32_42_9', 'cudart32_41_28',
-    'cudart32_40_10', 'cudart32_32_16', 'cudart32_31_4',
-    'cudart32_30_14', 'cudart32_30_9', 'cudart32_30_8', 'cudart32', 'cudart');
-{$ENDIF}
-
-{$IFDEF WIN64}
-  CUDARTDLLNAMES: array [0 .. 7] of string = (
-    'cudart64_42_9', 'cudart64_41_28',
-    'cudart64_40_10', 'cudart64_32_16', 'cudart64_31_4',
-    'cudart64_30_14', 'cudart64_30_9', 'cudart64_30_8');
-{$ENDIF}
-
-const
-  // single precision constants
-  CUDART_INF_F: Single = $7F800000;
-  CUDART_NAN_F: Single = $7FFFFFFF;
-  CUDART_MIN_DENORM_F: Single = $00000001;
-  CUDART_MAX_NORMAL_F: Single = $7F7FFFFF;
-  CUDART_NEG_ZERO_F: Single = $80000000;
-  CUDART_ZERO_F = 0.0;
-  CUDART_ONE_F = 1.0;
-  CUDART_SQRT_HALF_F = 0.707106781;
-  CUDART_SQRT_TWO_F = 1.414213562;
-  CUDART_THIRD_F = 0.333333333;
-  CUDART_PIO4_F = 0.785398163;
-  CUDART_PIO2_F = 1.570796327;
-  CUDART_3PIO4_F = 2.356194490;
-  CUDART_2_OVER_PI_F = 0.636619772;
-  CUDART_PI_F = 3.141592654;
-  CUDART_L2E_F = 1.442695041;
-  CUDART_L2T_F = 3.321928094;
-  CUDART_LG2_F = 0.301029996;
-  CUDART_LGE_F = 0.434294482;
-  CUDART_LN2_F = 0.693147181;
-  CUDART_LNT_F = 2.302585093;
-  CUDART_LNPI_F = 1.144729886;
-  CUDART_TWO_TO_M126_F = 1.175494351E-38;
-  CUDART_TWO_TO_126_F = 8.507059173E37;
-  CUDART_NORM_HUGE_F = 3.402823466E38;
-  CUDART_TWO_TO_23_F = 8388608.0;
-  CUDART_TWO_TO_24_F = 16777216.0;
-  CUDART_TWO_TO_31_F = 2147483648.0;
-  CUDART_TWO_TO_32_F = 4294967296.0;
-  CUDART_REMQUO_BITS_F = 3;
-  CUDART_REMQUO_MASK_F = CUDART_REMQUO_BITS_F;
-  CUDART_TRIG_PLOSS_F = 48039.0;
-
-  // double precision constants */
-{$IFNDEF CUDA_NO_SM_13_DOUBLE_INTRINSICS}
-  CUDART_INF: Double = $7FF0000000000000;
-  CUDART_NAN: Double = $FFF8000000000000;
-  CUDART_NEG_ZERO: Double = $8000000000000000;
-  CUDART_MIN_DENORM: Double = $0000000000000001;
-{$ELSE} // not CUDA_NO_SM_13_DOUBLE_INTRINSICS
-  CUDART_INF: Double = $7FF0000000000000;
-  CUDART_NAN: Double = $FFF8000000000000;
-  CUDART_NEG_ZERO: Double = $8000000000000000;
-  CUDART_MIN_DENORM: Double = $0000000000000001;
-{$ENDIF}
-  CUDART_ZERO = 0.0;
-  CUDART_ONE = 1.0;
-  CUDART_SQRT_TWO = 1.4142135623730951E+0;
-  CUDART_SQRT_HALF = 7.0710678118654757E-1;
-  CUDART_THIRD = 3.3333333333333333E-1;
-  CUDART_TWOTHIRD = 6.6666666666666667E-1;
-  CUDART_PIO4 = 7.8539816339744828E-1;
-  CUDART_PIO4_HI = 7.8539816339744828E-1;
-  CUDART_PIO4_LO = 3.0616169978683830E-17;
-  CUDART_PIO2 = 1.5707963267948966E+0;
-  CUDART_PIO2_HI = 1.5707963267948966E+0;
-  CUDART_PIO2_LO = 6.1232339957367660E-17;
-  CUDART_3PIO4 = 2.3561944901923448E+0;
-  CUDART_2_OVER_PI = 6.3661977236758138E-1;
-  CUDART_PI = 3.1415926535897931E+0;
-  CUDART_PI_HI = 3.1415926535897931E+0;
-  CUDART_PI_LO = 1.2246467991473532E-16;
-  CUDART_SQRT_2PI_HI = 2.5066282746310007E+0;
-  CUDART_SQRT_2PI_LO = -1.8328579980459167E-16;
-  CUDART_SQRT_PIO2_HI = 1.2533141373155003E+0;
-  CUDART_SQRT_PIO2_LO = -9.1642899902295834E-17;
-  CUDART_L2E = 1.4426950408889634E+0;
-  CUDART_L2E_HI = 1.4426950408889634E+0;
-  CUDART_L2E_LO = 2.0355273740931033E-17;
-  CUDART_L2T = 3.3219280948873622E+0;
-  CUDART_LG2 = 3.0102999566398120E-1;
-  CUDART_LG2_HI = 3.0102999566398120E-1;
-  CUDART_LG2_LO = -2.8037281277851704E-18;
-  CUDART_LGE = 4.3429448190325182E-1;
-  CUDART_LGE_HI = 4.3429448190325182E-1;
-  CUDART_LGE_LO = 1.09831965021676510E-17;
-  CUDART_LN2 = 6.9314718055994529E-1;
-  CUDART_LN2_HI = 6.9314718055994529E-1;
-  CUDART_LN2_LO = 2.3190468138462996E-17;
-  CUDART_LNT = 2.3025850929940459E+0;
-  CUDART_LNT_HI = 2.3025850929940459E+0;
-  CUDART_LNT_LO = -2.1707562233822494E-16;
-  CUDART_LNPI = 1.1447298858494002E+0;
-  CUDART_LN2_X_1024 = 7.0978271289338397E+2;
-  CUDART_LN2_X_1025 = 7.1047586007394398E+2;
-  CUDART_LN2_X_1075 = 7.4513321910194122E+2;
-  CUDART_LG2_X_1024 = 3.0825471555991675E+2;
-  CUDART_LG2_X_1075 = 3.2360724533877976E+2;
-  CUDART_TWO_TO_23 = 8388608.0;
-  CUDART_TWO_TO_52 = 4503599627370496.0;
-  CUDART_TWO_TO_54 = 18014398509481984.0;
-  CUDART_TWO_TO_M54 = 5.5511151231257827E-17;
-  CUDART_TWO_TO_M1022 = 2.22507385850720140E-308;
-  CUDART_TRIG_PLOSS = 2147483648.0;
-
-type
-  TcudaError = (cudaSuccess, cudaErrorMissingConfiguration,
-    cudaErrorMemoryAllocation, cudaErrorInitializationError,
-    cudaErrorLaunchFailure, cudaErrorPriorLaunchFailure, cudaErrorLaunchTimeout,
-    cudaErrorLaunchOutOfResources, cudaErrorInvalidDeviceFunction,
-    cudaErrorInvalidConfiguration, cudaErrorInvalidDevice,
-    cudaErrorInvalidValue, cudaErrorInvalidPitchValue, cudaErrorInvalidSymbol,
-    cudaErrorMapBufferObjectFailed, cudaErrorUnmapBufferObjectFailed,
-    cudaErrorInvalidHostPointer, cudaErrorInvalidDevicePointer,
-    cudaErrorInvalidTexture, cudaErrorInvalidTextureBinding,
-    cudaErrorInvalidChannelDescriptor, cudaErrorInvalidMemcpyDirection,
-    cudaErrorAddressOfConstant, cudaErrorTextureFetchFailed,
-    cudaErrorTextureNotBound, cudaErrorSynchronizationError,
-    cudaErrorInvalidFilterSetting, cudaErrorInvalidNormSetting,
-    cudaErrorMixedDeviceExecution, cudaErrorCudartUnloading, cudaErrorUnknown,
-    cudaErrorNotYetImplemented, cudaErrorMemoryValueTooLarge,
-    cudaErrorInvalidResourceHandle, cudaErrorNotReady, cudaErrorStartupFailure,
-    cudaErrorApiFailureBase);
-
-  { +//DEVICE_BUILTIN*/ }
-  TCudaChannelFormatKind = (cudaChannelFormatKindSigned,
-    cudaChannelFormatKindUnsigned, cudaChannelFormatKindFloat);
-
-  TCudaGLMapFlags = (cudaGLMapFlagsNone,
-    /// < Default; Assume resource can be read/written
-    cudaGLMapFlagsReadOnly,
-    /// < CUDA kernels will not write to this resource
-    cudaGLMapFlagsWriteDiscard);
-  /// < CUDA kernels will only write to and will not read from this resource
-
-  { +//DEVICE_BUILTIN*/ }
-  PcudaChannelFormatDesc = ^TCudaChannelFormatDesc;
-
-  TCudaChannelFormatDesc = record
-    x: Integer;
-    y: Integer;
-    z: Integer;
-    w: Integer;
-    f: TCudaChannelFormatKind;
-  end;
-
-  { +//DEVICE_BUILTIN*/ }
-  TcudaArray = record
-  end; // !ATTENTION foreward Declaration?)
-
-  { +//DEVICE_BUILTIN*/ }
-  TcudaMemcpyKind = (cudaMemcpyHostToHost { = 0 } , cudaMemcpyHostToDevice,
-    cudaMemcpyDeviceToHost, cudaMemcpyDeviceToDevice);
-
-  { +//DEVICE_BUILTIN*/ }
-  TcudaPitchedPtr = record
-    ptr: Pointer;
-    pitch: NativeUInt;
-    xsize: NativeUInt;
-    ysize: NativeUInt;
-  end;
-
-  { +//DEVICE_BUILTIN*/ }
-  TcudaExtent = record
-    width: NativeUInt;
-    height: NativeUInt;
-    depth: NativeUInt;
-  end;
-
-  { +//DEVICE_BUILTIN*/ }
-  TcudaPos = record
-    x: NativeUInt;
-    y: NativeUInt;
-    z: NativeUInt;
-  end;
-
-  { +//DEVICE_BUILTIN*/ }
-  TcudaMemcpy3DParms = record
-    srcArray: Pointer;
-    srcPos: TcudaPos;
-    srcPtr: TcudaPitchedPtr;
-    dstArray: Pointer;
-    dstPos: TcudaPos;
-    dstPtr: TcudaPitchedPtr;
-    extent: TcudaExtent;
-    kind: TcudaMemcpyKind;
-  end;
-
-  { +//DEVICE_BUILTIN*/ }
-  PCudaDeviceProp = ^TCudaDeviceProp;
-
-  TCudaDeviceProp = record
-    name: array [0 .. 256 - 1] of AnsiChar;
-    totalGlobalMem: NativeUInt;
-    sharedMemPerBlock: NativeUInt;
-    regsPerBlock: Integer;
-    warpSize: Integer;
-    memPitch: NativeUInt;
-    maxThreadsPerBlock: Integer;
-    maxThreadsDim: array [0 .. 3 - 1] of Integer;
-    maxGridSize: array [0 .. 3 - 1] of Integer;
-    clockRate: Integer;
-    totalConstMem: NativeUInt;
-    major: Integer;
-    minor: Integer;
-    textureAlignment: NativeUInt;
-    deviceOverlap: Integer;
-    multiProcessorCount: Integer;
-    // Specified whether there is a run time limit on kernels
-    kernelExecTimeoutEnabled: Integer;
-    // Device is egrated as opposed to discrete
-    egrated: Integer;
-    // Device can map host memory with cudaHostAlloc/cudaHostGetDevicePoer
-    canMapHostMemory: Integer;
-    // Compute mode (See ::cudaComputeMode)
-    computeMode: Integer;
-    // Maximum 1D texture size
-    maxTexture1D: Integer;
-    // Maximum 2D texture dimensions
-    maxTexture2D: array[0..1] of Integer;
-    // Maximum 3D texture dimensions
-    maxTexture3D: array[0..2] of Integer;
-    // Maximum 2D texture array dimensions
-    maxTexture2DArray: array[0..2] of Integer;
-    // Alignment requirements for surfaces
-    surfaceAlignment: NativeUInt;
-     // Device can possibly execute multiple kernels concurrently
-    concurrentKernels: Integer;
-    // Device has ECC support enabled
-    ECCEnabled: Integer;
-    // PCI bus ID of the device
-    pciBusID: Integer;
-    // PCI device ID of the device
-    pciDeviceID: Integer;
-    // 1 if device is a Tesla device using TCC driver, 0 otherwise
-    tccDriver: Integer;
-    __cudaReserved: array [0 .. 20] of Integer;
-  end;
-
-  TcudaTextureAddressMode = (cudaAddressModeWrap, cudaAddressModeClamp, cudaAddressModeMirror);
-
-  TcudaTextureFilterMode = (cudaFilterModePoint, cudaFilterModeLinear);
-
-  TcudaTextureReadMode = (cudaReadModeElementType, cudaReadModeNormalizedFloat);
-
-  PTextureReference = ^TTextureReference;
-
-  TTextureReference = record
-    normalized: Integer;
-    filterMode: TcudaTextureFilterMode;
-    addressMode: array [0 .. 2] of TcudaTextureAddressMode;
-    channelDesc: TCudaChannelFormatDesc;
-    __cudaReserved: array [0 .. 15] of Integer;
-  end;
-
-  PcudaArray = ^TcudaArray;
-
-  { +//****************************************************************************** }
-  { -** }
-  { -* SHORTHAND TYPE DEFINITION USED BY RUNTIME API* }
-  { -** }
-  { =*******************************************************************************/ }
-
-  { +//DEVICE_BUILTIN*/ }
-  cudaError_t = TcudaError;
-  { +//DEVICE_BUILTIN*/ }
-  cudaStream_t = Integer;
-  { +//DEVICE_BUILTIN*/ }
-  cudaEvent_t = Integer;
-
-//************************************)
-
-var
-
-cudaBindTexture: function(var offset: NativeUInt; const texref: PTextureReference;
-    var devPtr: Pointer; var desc: TCudaChannelFormatDesc; size: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaBindTexture2D: function(var offset: NativeUInt; const texref: PTextureReference; const devPtr: Pointer;
-    var desc: TCudaChannelFormatDesc; width, height, pitch: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaBindTextureToArray: function(const texref: PTextureReference; const cudaArray: PcudaArray): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaUnbindTexture: function(const texref: PTextureReference): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGetTextureAlignmentOffset: function(offset: NativeUInt; const texref: PTextureReference): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGetTextureReference: function(const texref: PTextureReference; const symbol: PAnsiChar): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGetChannelDesc: function(var desc: TCudaChannelFormatDesc; const array_: Pointer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaCreateChannelDesc: function(x, y, z, w: Integer; f: TCudaChannelFormatKind): TCudaChannelFormatDesc;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-(* ******************************************************************************
-  *                                                                              *
-  *                                                                              *
-  *                                                                              *
-  ****************************************************************************** *)
-
-cudaMalloc3D: function(var pitchedDevPtr: TcudaPitchedPtr; extent: TcudaExtent): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMalloc3DArray: function(var arrayPtr: PcudaArray; const desc: TCudaChannelFormatDesc; extent: TcudaExtent; flags: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemset3D: function(pitchedDevPtr: TcudaPitchedPtr; value: Integer; extent: TcudaExtent): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy3D: function(const p: TcudaMemcpy3DParms): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy3DAsync: function(const p: TcudaMemcpy3DParms; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMalloc: function(var devPtr; size: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMallocHost: function(var ptr: Pointer; size: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  cudaMallocPitch: function(var devPtr; var pitch: NativeUInt; width: NativeUInt; height: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMallocArray: function(var aarray: Pointer; var desc: TCudaChannelFormatDesc; width: NativeUInt; height: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaFree: function(devPtr: Pointer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaFreeHost: function(ptr: Pointer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaFreeArray: function(const aarray: Pointer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaHostAlloc: function(var pHost: Pointer; bytes: NativeUInt; flags: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaHostGetDevicePointer: function(var pDevice: Pointer; pHost: Pointer; flags: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaHostGetFlags: function(var pFlags: Cardinal; pHost: Pointer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemGetInfo: function(var free: NativeUInt; var total: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy: function(dst: Pointer; src: Pointer; count: NativeUInt; kind: TcudaMemcpyKind): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyToArray: function(var dst: PcudaArray; wOffset: NativeUInt; hOffset: NativeUInt; var src; count: NativeUInt; kind: TcudaMemcpyKind): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyFromArray: function(var dst; const src: PcudaArray; wOffset: NativeUInt; hOffset: NativeUInt; count: NativeUInt; kind: TcudaMemcpyKind): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyArrayToArray: function(dst: PcudaArray; wOffsetDst: NativeUInt; hOffsetDst: NativeUInt; const src: PcudaArray; wOffsetSrc: NativeUInt;
-    hOffsetSrc: NativeUInt; count: NativeUInt; const kind: TcudaMemcpyKind = cudaMemcpyDeviceToDevice): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy2D: function(var dst; dpitch: NativeUInt; var src; spitch: NativeUInt;
-    width: NativeUInt; height: NativeUInt; kind: TcudaMemcpyKind): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy2DToArray: function(dst: PcudaArray; wOffset: NativeUInt;
-  hOffset: NativeUInt; var src; spitch: NativeUInt; width: NativeUInt; height: NativeUInt; kind: TcudaMemcpyKind): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy2DFromArray: function(var dst; dpitch: NativeUInt; src: PcudaArray; wOffset: NativeUInt; hOffset: NativeUInt; width: NativeUInt; height: NativeUInt;
-    kind: TcudaMemcpyKind): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy2DArrayToArray: function(dst: PcudaArray; wOffsetDst: NativeUInt;
-    hOffsetDst: NativeUInt; src: PcudaArray; wOffsetSrc: NativeUInt; hOffsetSrc: NativeUInt;
-    width: NativeUInt; height: NativeUInt; const kind: TcudaMemcpyKind = cudaMemcpyDeviceToDevice): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyToSymbol: function(symbol: PAnsiChar; var src; count: NativeUInt; const offset: NativeUInt = 0;
-    const kind: TcudaMemcpyKind = cudaMemcpyHostToDevice): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyFromSymbol: function(var dst; symbol: PAnsiChar; count: NativeUInt; const offset: NativeUInt = 0;
-    const kind: TcudaMemcpyKind = cudaMemcpyDeviceToHost): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-{ +//*************************************************************************** }
-{ -** }
-{ -** }
-{ -** }
-{ =***************************************************************************** }
-
-cudaMemcpyAsync: function(var dst; const src; count: NativeUInt; kind: TcudaMemcpyKind; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyToArrayAsync: function(dst: PcudaArray; wOffset: NativeUInt; hOffset: NativeUInt; const src; count: NativeUInt; kind: TcudaMemcpyKind;
-    stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyFromArrayAsync: function(var dst; const src: PcudaArray;
-    wOffset: NativeUInt; hOffset: NativeUInt; count: NativeUInt; kind: TcudaMemcpyKind; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy2DAsync: function(var dst; dpitch: NativeUInt; const src;
-    spitch: NativeUInt; width: NativeUInt; height: NativeUInt; kind: TcudaMemcpyKind; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy2DToArrayAsync: function(dst: PcudaArray; wOffset: NativeUInt;
-    hOffset: NativeUInt; const src; spitch: NativeUInt; width: NativeUInt; height: NativeUInt;
-    kind: TcudaMemcpyKind; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpy2DFromArrayAsync: function(var dst; dpitch: NativeUInt;
-    const src: PcudaArray; wOffset: NativeUInt; hOffset: NativeUInt; width: NativeUInt;
-    height: NativeUInt; kind: TcudaMemcpyKind; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyToSymbolAsync: function(const symbol: PAnsiChar; const src;
-    count: NativeUInt; offset: NativeUInt; kind: TcudaMemcpyKind; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemcpyFromSymbolAsync: function(var dst; const symbol: PAnsiChar;
-  count: NativeUInt; offset: NativeUInt; kind: TcudaMemcpyKind; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-//***********************************
-
-cudaMemset: function(var devPtr; value: Integer; count: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaMemset2D: function(var devPtr; pitch: NativeUInt; value: Integer;
-    width: NativeUInt; height: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-//**********************************
-
-cudaGetSymbolAddress: function(var devPtr: Pointer; const symbol: PAnsiChar): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGetSymbolSize: function(var size: NativeUInt; const symbol: PAnsiChar): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-{ +//*************************************************************************** }
-{ -** }
-{ -** }
-{ -** }
-{ =***************************************************************************** }
-
-cudaGetDeviceCount: function(var count: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGetDeviceProperties: function(var prop: TCudaDeviceProp; device: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaChooseDevice: function(var device: Integer; const prop: PCudaDeviceProp): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaSetDevice: function(device: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGetDevice: function(var device: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaSetDeviceFlags: function(flags: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaSetValidDevices: function(device_arr: PInteger; len: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-
-//***********************************
-
-cudaConfigureCall: function(gridDim, blockDim: TDim3; sharedMem: NativeUInt; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaSetupArgument: function(const arg: Pointer; size: NativeUInt; offset: NativeUInt): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaFuncSetCacheConfig: function(const func: PAnsiChar; cacheConfig: TcudaFuncCache): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaLaunch: function(const entry: PAnsiChar): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaFuncGetAttributes: function(var attr: TcudaFuncAttributes; const func: PAnsiChar): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  { +//****************************************************************************** }
-  { -** }
-  { -** }
-  { -** }
-  { =*******************************************************************************/ }
-
-cudaGetLastError: function: cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-  { +//****************************************************************************** }
-  { -** }
-  { -** }
-  { -** }
-  { =*******************************************************************************/ }
-cudaGLSetGLDevice: function(device: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGLRegisterBufferObject: function(bufObj: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsGLRegisterImage: function(const resource: PCUgraphicsResource; image: Cardinal; target: Cardinal; flags: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsGLRegisterBuffer: function(const resource: PCUgraphicsResource; buffer: Cardinal; flags: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGLMapBufferObject: function(devPtr: Pointer; bufObj: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGLUnmapBufferObject: function(bufObj: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGLUnregisterBufferObject: function(bufObj: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGLSetBufferObjectMapFlags: function(bufObj: Cardinal; flags: TCudaGLMapFlags): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGLMapBufferObjectAsync: function(var devPtr: Pointer; bufObj: Cardinal; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGLUnmapBufferObjectAsync: function(bufObj: Cardinal; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsUnregisterResource: function(resource: PCUgraphicsResource): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsResourceSetMapFlags: function(resource: PCUgraphicsResource; flags: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsMapResources: function(count: Integer; const resources: PCUgraphicsResource; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsUnmapResources: function(count: Integer; const resources: PCUgraphicsResource; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsResourceGetMappedPointer: function(var pDevPtr: TCUdeviceptr;
-    var pSize: Cardinal; resource: PCUgraphicsResource): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGraphicsSubResourceGetMappedArray: function(var pArray: PCUarray;
-    resource: PCUgraphicsResource; arrayIndex: Cardinal; mipLevel: Cardinal): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaGetErrorString: function(error: cudaError_t): PAnsiChar;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaDriverGetVersion: function(out driverVersion: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaRuntimeGetVersion: function(out runtimeVersion: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-(* ******************************************************************************
- *                                                                              *
- *                                                                              *
- *                                                                              *
- ****************************************************************************** *)
-
-cudaSetDoubleForDevice: function(var d: Double): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaSetDoubleForHost: function(var d: Double): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-(* ******************************************************************************
- *                                                                              *
- *                                                                              *
- *                                                                              *
- ****************************************************************************** *)
-
-cudaStreamCreate: function(var pStream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaStreamDestroy: function(stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaStreamSynchronize: function(stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaStreamQuery: function(stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-(* ******************************************************************************
- *                                                                              *
- *                                                                              *
- *                                                                              *
- ****************************************************************************** *)
-
-cudaEventCreate: function(var event: cudaEvent_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaEventCreateWithFlags: function(var event: cudaEvent_t; flags: Integer): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaEventRecord: function(event: cudaEvent_t; stream: cudaStream_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaEventQuery: function(event: cudaEvent_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaEventSynchronize: function(event: cudaEvent_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaEventDestroy: function(event: cudaEvent_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaEventElapsedTime: function(var ms: Single; start: cudaEvent_t; ending: cudaEvent_t): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaWGLGetDevice: function(var device: Integer; hGpu: HGPUNV): cudaError_t;
-{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-(* ******************************************************************************
- *                                                                              *
- *                                                                              *
- *                                                                              *
- ****************************************************************************** *)
-
-cudaThreadExit: function(): cudaError_t;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaThreadSynchronize: function(): cudaError_t;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaThreadSetLimit: function(limit: TcudaLimit; value: NativeUInt): cudaError_t;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-cudaThreadGetLimit: function(var value: NativeUInt; limit: TcudaLimit): cudaError_t;{$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
-function cudaGetLastErrorString: string;
-function InitCUDART: Boolean;
-procedure CloseCUDART;
-function InitCUDARTFromLibrary(const LibName: WideString): Boolean;
-function IsCUDARTInitialized: Boolean;
-
-//--------------------------------------------
-implementation
-//--------------------------------------------
-
-function cudaGetLastErrorString: string;
-begin
-  Result := string(cudaGetErrorString(cudaGetLastError));
-end;
-
-const
-  INVALID_MODULEHANDLE = 0;
-
-var
-{$IFDEF MSWINDOWS}
-  CUDARTHandle: HINST = INVALID_MODULEHANDLE;
-{$ELSE}
-  CUDARTHandle: TLibHandle = INVALID_MODULEHANDLE;
-{$ENDIF}
-
-function CUDARTGetProcAddress(ProcName: PAnsiChar): Pointer;
-begin
-  Result := GetProcAddress(CUDARTHandle, ProcName);
-end;
-
-function InitCUDART: Boolean;
-var
-  I: Integer;
-begin
-  Result := True;
-  if CUDARTHandle = INVALID_MODULEHANDLE then
-  begin
-    for I := 0 to High(CUDARTDLLNAMES) do
-    begin
-      if InitCUDARTFromLibrary(CUDARTDLLNAMES[I] + '.dll') then
-        Exit;
-    end;
-  end;
-  Result := False;
-end;
-
-procedure CloseCUDART;
-begin
-  if CUDARTHandle <> INVALID_MODULEHANDLE then
-  begin
-    FreeLibrary(CUDARTHandle);
-    CUDARTHandle := INVALID_MODULEHANDLE;
-  end;
-end;
-
-function InitCUDARTFromLibrary(const LibName: WideString): Boolean;
-var
-  V: Integer;
-begin
-  CloseCUDART;
-  CUDARTHandle := GetModuleHandleW(PWideChar(LibName));
-  if CUDARTHandle = INVALID_MODULEHANDLE then
-    CUDARTHandle := LoadLibraryW(PWideChar(LibName));
-
-  if CUDARTHandle = INVALID_MODULEHANDLE then
-    Exit(False);
-
-  cudaFreeHost := CUDARTGetProcAddress('cudaFreeHost');
-  cudaFuncGetAttributes := CUDARTGetProcAddress('cudaFuncGetAttributes');
-  cudaGetChannelDesc := CUDARTGetProcAddress('cudaGetChannelDesc');
-  cudaGetDevice := CUDARTGetProcAddress('cudaGetDevice');
-  cudaGetDeviceCount := CUDARTGetProcAddress('cudaGetDeviceCount');
-  cudaGetDeviceProperties := CUDARTGetProcAddress('cudaGetDeviceProperties');
-  cudaGetErrorString := CUDARTGetProcAddress('cudaGetErrorString');
-  cudaGetLastError := CUDARTGetProcAddress('cudaGetLastError');
-  cudaGetSymbolAddress := CUDARTGetProcAddress('cudaGetSymbolAddress');
-  cudaGetSymbolSize := CUDARTGetProcAddress('cudaGetSymbolSize');
-  cudaGetTextureAlignmentOffset := CUDARTGetProcAddress('cudaGetTextureAlignmentOffset');
-  cudaGetTextureReference := CUDARTGetProcAddress('cudaGetTextureReference');
-  cudaGLMapBufferObject := CUDARTGetProcAddress('cudaGLMapBufferObject');
-  cudaGLMapBufferObjectAsync := CUDARTGetProcAddress('cudaGLMapBufferObjectAsync');
-  cudaGLRegisterBufferObject := CUDARTGetProcAddress('cudaGLRegisterBufferObject');
-  cudaGLSetBufferObjectMapFlags := CUDARTGetProcAddress('cudaGLSetBufferObjectMapFlags');
-  cudaGLSetGLDevice := CUDARTGetProcAddress('cudaGLSetGLDevice');
-  cudaGLUnmapBufferObject := CUDARTGetProcAddress('cudaGLUnmapBufferObject');
-  cudaGLUnmapBufferObjectAsync := CUDARTGetProcAddress('cudaGLUnmapBufferObjectAsync');
-  cudaGLUnregisterBufferObject := CUDARTGetProcAddress('cudaGLUnregisterBufferObject');
-  cudaGraphicsGLRegisterBuffer := CUDARTGetProcAddress('cudaGraphicsGLRegisterBuffer');
-  cudaGraphicsGLRegisterImage := CUDARTGetProcAddress('cudaGraphicsGLRegisterImage');
-  cudaGraphicsMapResources := CUDARTGetProcAddress('cudaGraphicsMapResources');
-  cudaGraphicsResourceGetMappedPointer := CUDARTGetProcAddress('cudaGraphicsResourceGetMappedPointer');
-  cudaGraphicsResourceSetMapFlags := CUDARTGetProcAddress('cudaGraphicsResourceSetMapFlags');
-  cudaGraphicsSubResourceGetMappedArray := CUDARTGetProcAddress('cudaGraphicsSubResourceGetMappedArray');
-  cudaGraphicsUnmapResources := CUDARTGetProcAddress('cudaGraphicsUnmapResources');
-  cudaGraphicsUnregisterResource := CUDARTGetProcAddress('cudaGraphicsUnregisterResource');
-  cudaHostAlloc := CUDARTGetProcAddress('cudaHostAlloc');
-  cudaHostGetDevicePointer := CUDARTGetProcAddress('cudaHostGetDevicePointer');
-  cudaHostGetFlags := CUDARTGetProcAddress('cudaHostGetFlags');
-  cudaLaunch := CUDARTGetProcAddress('cudaLaunch');
-  cudaMalloc := CUDARTGetProcAddress('cudaMalloc');
-  cudaMalloc3D := CUDARTGetProcAddress('cudaMalloc3D');
-  cudaMalloc3DArray := CUDARTGetProcAddress('cudaMalloc3DArray');
-  cudaMallocArray := CUDARTGetProcAddress('cudaMallocArray');
-  cudaMallocHost := CUDARTGetProcAddress('cudaMallocHost');
-  cudaMallocPitch := CUDARTGetProcAddress('cudaMallocPitch');
-  cudaMemcpy := CUDARTGetProcAddress('cudaMemcpy');
-  cudaMemcpy2D := CUDARTGetProcAddress('cudaMemcpy2D');
-  cudaMemcpy2DArrayToArray := CUDARTGetProcAddress('cudaMemcpy2DArrayToArray');
-  cudaMemcpy2DAsync := CUDARTGetProcAddress('cudaMemcpy2DAsync');
-  cudaMemcpy2DFromArray := CUDARTGetProcAddress('cudaMemcpy2DFromArray');
-  cudaMemcpy2DFromArrayAsync := CUDARTGetProcAddress('cudaMemcpy2DFromArrayAsync');
-  cudaMemcpy2DToArray := CUDARTGetProcAddress('cudaMemcpy2DToArray');
-  cudaMemcpy2DToArrayAsync := CUDARTGetProcAddress('cudaMemcpy2DToArrayAsync');
-  cudaMemcpy3D := CUDARTGetProcAddress('cudaMemcpy3D');
-  cudaMemcpy3DAsync := CUDARTGetProcAddress('cudaMemcpy3DAsync');
-  cudaMemcpyArrayToArray := CUDARTGetProcAddress('cudaMemcpyArrayToArray');
-  cudaMemcpyAsync := CUDARTGetProcAddress('cudaMemcpyAsync');
-  cudaMemcpyFromArray := CUDARTGetProcAddress('cudaMemcpyFromArray');
-  cudaMemcpyFromArrayAsync := CUDARTGetProcAddress('cudaMemcpyFromArrayAsync');
-  cudaMemcpyFromSymbol := CUDARTGetProcAddress('cudaMemcpyFromSymbol');
-  cudaMemcpyFromSymbolAsync := CUDARTGetProcAddress('cudaMemcpyFromSymbolAsync');
-  cudaMemcpyToArray := CUDARTGetProcAddress('cudaMemcpyToArray');
-  cudaMemcpyToArrayAsync := CUDARTGetProcAddress('cudaMemcpyToArrayAsync');
-  cudaMemcpyToSymbol := CUDARTGetProcAddress('cudaMemcpyToSymbol');
-  cudaMemcpyToSymbolAsync := CUDARTGetProcAddress('cudaMemcpyToSymbolAsync');
-  cudaMemGetInfo := CUDARTGetProcAddress('cudaMemGetInfo');
-  cudaMemset := CUDARTGetProcAddress('cudaMemset');
-  cudaMemset2D := CUDARTGetProcAddress('cudaMemset2D');
-  cudaMemset3D := CUDARTGetProcAddress('cudaMemset3D');
-  cudaRuntimeGetVersion := CUDARTGetProcAddress('cudaRuntimeGetVersion');
-  cudaSetDevice := CUDARTGetProcAddress('cudaSetDevice');
-  cudaSetDeviceFlags := CUDARTGetProcAddress('cudaSetDeviceFlags');
-  cudaSetDoubleForDevice := CUDARTGetProcAddress('cudaSetDoubleForDevice');
-  cudaSetDoubleForHost := CUDARTGetProcAddress('cudaSetDoubleForHost');
-  cudaSetupArgument := CUDARTGetProcAddress('cudaSetupArgument');
-  cudaSetValidDevices := CUDARTGetProcAddress('cudaSetValidDevices');
-  cudaStreamCreate := CUDARTGetProcAddress('cudaStreamCreate');
-  cudaStreamDestroy := CUDARTGetProcAddress('cudaStreamDestroy');
-  cudaStreamQuery := CUDARTGetProcAddress('cudaStreamQuery');
-  cudaStreamSynchronize := CUDARTGetProcAddress('cudaStreamSynchronize');
-  cudaThreadExit := CUDARTGetProcAddress('cudaThreadExit');
-  cudaThreadSynchronize := CUDARTGetProcAddress('cudaThreadSynchronize');
-  cudaThreadSetLimit := CUDARTGetProcAddress('cudaThreadSetLimit');
-  cudaThreadGetLimit := CUDARTGetProcAddress('cudaThreadGetLimit');
-  cudaUnbindTexture := CUDARTGetProcAddress('cudaUnbindTexture');
-  cudaWGLGetDevice := CUDARTGetProcAddress('cudaWGLGetDevice');
-
-  cudaRuntimeGetVersion(V);
-  Result := True;
-end;
-
-function IsCUDARTInitialized: Boolean;
-begin
-  Result := (CUDARTHandle <> INVALID_MODULEHANDLE);
-end;
-
-//-----------------------------------------------
-initialization
-//-----------------------------------------------
-
-//-----------------------------------------------
-finalization
-//-----------------------------------------------
-
-CloseCUDART;
-
-end.

+ 0 - 292
Source/FMX/CUDAx.Utility.pas

@@ -1,292 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit CUDAx.Utility;
-
-(* Wraper of cutil.*)
-
-interface
-
-uses
-  Winapi.Windows;
-
-const
-{$IFDEF WIN64}
-  CUTILDLL = 'cutil64.dll';
-{$ELSE}
-  CUTILDLL = 'cutil32.dll';
-{$ENDIF}
-
-var
-  cutFindFilePath: function(const filename: PAnsiChar; const executablePath:
-    PAnsiChar): PAnsiChar;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutLoadPGMf: function(const filename: PAnsiChar; var data: System.PSingle; var w:
-    Integer; var h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutSavePGMf: function(const filename: PAnsiChar; data: System.PSingle; w: Integer;
-    h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutLoadPGMub: function(const filename: PAnsiChar; var data: PByte; var w:
-    Integer; var h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutLoadPPMub: function(const filename: PAnsiChar; var data: PByte; var w:
-    Integer; var h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutLoadPPM4ub: function(const filename: PAnsiChar; var data: PByte; var w:
-    Integer; var h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutLoadPGMi: function(const filename: PAnsiChar; var data: PInteger; var w:
-    Integer; var h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutLoadPGMs: function(const filename: PAnsiChar; var data: PWord; var w:
-    Integer; var h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutSavePGMub: function(const filename: PAnsiChar; data: PByte; w: Integer;
-    h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutSavePPMub: function(const filename: PAnsiChar; data: PByte; w: Integer;
-    h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutSavePPM4ub: function(const filename: PAnsiChar; data: PByte; w: Integer;
-    h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutSavePGMi: function(const filename: PAnsiChar; data: PInteger; w: Integer;
-    h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutSavePGMs: function(const filename: PAnsiChar; data: PWord; w: Integer;
-    h: Integer): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-
-
-  cutComparef: function(const reference: PSingle; const data: PSingle;
-                 const len: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutComparei: function(const reference: PInteger; const data: PInteger;
-                 const len: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutCompareuit: function( const reference: PInteger; const data: PInteger;
-                const len: Cardinal; const epsilon: Single; const threshold: Single ): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutCompareub: function(const reference: PByte; const data: PByte;
-                 const len: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutCompareubt: function( const reference: PByte; const data: PByte;
-                const len: Cardinal; const epsilon: Single; const threshold: Single ): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutCompareube: function( const reference: PByte; const data: PByte;
-                const len: Cardinal; const epsilon: Single): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutComparefe: function( const reference: PSingle; const data: PSingle;
-                const len: Cardinal; const epsilon: Single): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutComparefet: function( const reference: PSingle; const data: PSingle;
-                const len: Cardinal; const epsilon: Single; const threshold: Single ): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutCompareL2fe: function( const reference: PSingle; const data: PSingle;
-                const len: Cardinal; const epsilon: Single): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-
-  cutCreateTimer: function(var name: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutStartTimer: function
-  (const name: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutStopTimer: function(const name: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutResetTimer: function(const name: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutDeleteTimer: function(const name: Cardinal): Boolean;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}
-{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutGetTimerValue: function(const name: Cardinal): Single;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutGetAverageTimerValue: function(const name: Cardinal): Single;
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-  cutFree: procedure(ptr: Pointer);
-{$IFDEF CUDA_STDCALL}stdcall;
-{$ENDIF}{$IFDEF CUDA_CDECL}cdecl;
-{$ENDIF}
-
-function InitCUTIL: Boolean;
-procedure CloseCUTIL;
-function InitCUTILFromLibrary(const LibName: WideString): Boolean;
-function IsCUTILInitialized: Boolean;
-
-//==============================================
-implementation
-//==============================================
-
-const
-  INVALID_MODULEHANDLE = 0;
-
-  // ************** Windows specific ********************
-{$IFDEF MSWINDOWS}
-var
-  CUTILHandle: HINST = INVALID_MODULEHANDLE;
-{$ENDIF}
-  // ************** UNIX specific ********************
-{$IFDEF UNIX}
-var
-  CUTILHandle: TLibHandle = INVALID_MODULEHANDLE;
-{$ENDIF}
-
-function CUTILGetProcAddress(ProcName: PAnsiChar): Pointer;
-begin
-  result := GetProcAddress(Cardinal(CUTILHandle), ProcName);
-end;
-
-function InitCUTIL: Boolean;
-begin
-  if CUTILHandle = INVALID_MODULEHANDLE then
-    Result := InitCUTILFromLibrary(CUTILDLL)
-  else
-    Result := True;
-end;
-
-procedure CloseCUTIL;
-begin
-  if CUTILHandle <> INVALID_MODULEHANDLE then
-  begin
-    FreeLibrary(Cardinal(CUTILHandle));
-    CUTILHandle := INVALID_MODULEHANDLE;
-  end;
-end;
-
-function InitCUTILFromLibrary(const LibName: WideString): Boolean;
-begin
-  Result := False;
-  CloseCUTIL;
-  CUTILHandle := LoadLibraryW(PWideChar(LibName));
-  if CUTILHandle = INVALID_MODULEHANDLE then
-    Exit;
-  cutFindFilePath := CUTILGetProcAddress('cutFindFilePath');
-  cutLoadPGMf := CUTILGetProcAddress('cutLoadPGMf');
-  cutSavePGMf := CUTILGetProcAddress('cutSavePGMf');
-  cutLoadPGMub := CUTILGetProcAddress('cutLoadPGMub');
-  cutLoadPPMub := CUTILGetProcAddress('cutLoadPPMub');
-  cutLoadPPM4ub := CUTILGetProcAddress('cutLoadPPM4ub');
-  cutLoadPGMi := CUTILGetProcAddress('cutLoadPGMi');
-  cutLoadPGMs := CUTILGetProcAddress('cutLoadPGMs');
-  cutSavePGMub := CUTILGetProcAddress('cutSavePGMub');
-  cutSavePPMub := CUTILGetProcAddress('cutSavePPMub');
-  cutSavePPM4ub := CUTILGetProcAddress('cutSavePPM4ub');
-  cutSavePGMi := CUTILGetProcAddress('cutSavePGMi');
-  cutSavePGMs := CUTILGetProcAddress('cutSavePGMs');
-  cutComparef := CUTILGetProcAddress('cutComparef');
-  cutComparei := CUTILGetProcAddress('cutComparei');
-  cutCompareuit := CUTILGetProcAddress('cutCompareuit');
-  cutCompareub := CUTILGetProcAddress('cutCompareub');
-  cutCompareubt := CUTILGetProcAddress('cutCompareubt');
-  cutCompareube := CUTILGetProcAddress('cutCompareube');
-  cutComparefe := CUTILGetProcAddress('cutComparefe');
-  cutComparefet := CUTILGetProcAddress('cutComparefet');
-  cutCompareL2fe := CUTILGetProcAddress('cutCompareL2fe');
-  cutCreateTimer := CUTILGetProcAddress('cutCreateTimer');
-  cutStartTimer := CUTILGetProcAddress('cutStartTimer');
-  cutStopTimer := CUTILGetProcAddress('cutStopTimer');
-  cutResetTimer := CUTILGetProcAddress('cutResetTimer');
-  cutDeleteTimer := CUTILGetProcAddress('cutDeleteTimer');
-  cutGetTimerValue := CUTILGetProcAddress('cutGetTimerValue');
-  cutGetAverageTimerValue := CUTILGetProcAddress('cutGetAverageTimerValue');
-  cutFree := CUTILGetProcAddress('cutFree');
-  Result := True;
-end;
-
-function IsCUTILInitialized: Boolean;
-begin
-  Result := (CUTILHandle <> INVALID_MODULEHANDLE);
-end;
-
-initialization
-
-finalization
-
-  CloseCUTIL;
-
-end.
-

+ 0 - 164
Source/FMX/OpenCLx.GL.pas

@@ -1,164 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit OpenCLx.GL;
-
-///*****************************************************************************
-// * 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.
-// *
-// * 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
-
-uses
-  OpenCLx.Import,
-  OpenCLx.Platform;
-
-type
-  PGLuint = ^Cardinal;
-
-  Tcl_gl_object_type = Tcl_uint;
-  Pcl_gl_object_type = ^Tcl_gl_object_type;
-
-  Tcl_gl_texture_info = Tcl_uint;
-  Pcl_gl_texture_info = ^Tcl_gl_texture_info;
-
-  Tcl_gl_platform_info = Tcl_uint;
-  Pcl_gl_platform_info = ^Tcl_gl_platform_info;
-
-  __GLsync = record end; Pcl_GLsync = ^__GLsync;
-
-  //* cl_gl_object_type = 0x2000 - 0x200F enum values are currently taken  *//
-
-const
-
-CL_GL_OBJECT_BUFFER =                     $2000;
-CL_GL_OBJECT_TEXTURE2D =                  $2001;
-CL_GL_OBJECT_TEXTURE3D =                  $2002;
-CL_GL_OBJECT_RENDERBUFFER =               $2003;
-CL_GL_OBJECT_TEXTURE2D_ARRAY =            $200E;
-CL_GL_OBJECT_TEXTURE1D =                  $200F;
-CL_GL_OBJECT_TEXTURE1D_ARRAY =            $2010;
-CL_GL_OBJECT_TEXTURE_BUFFER =             $2011;
-
-//* cl_gl_texture_info *//
-CL_GL_TEXTURE_TARGET =                    $2004;
-CL_GL_MIPMAP_LEVEL =                      $2005;
-CL_GL_NUM_SAMPLES =                       $2012;
-
-function clCreateFromGLBuffer(context: Tcl_context;
-           flags: Tcl_mem_flags;
-           bufobj: Cardinal;
-           errcode_ret: Pcl_int): Tcl_mem; //< CL_API_SUFFIX__VERSION_1_0;
-           stdcall; external LibOpenCL;
-
-function clCreateFromGLTexture3D(context: Tcl_context;
-           flags: Tcl_mem_flags;
-           target: Cardinal;
-           miplevel: Integer;
-           texture: Cardinal;
-           errcode_ret: Pcl_int): Tcl_mem; //< CL_API_SUFFIX__VERSION_1_2;
-           stdcall; external LibOpenCL;
-
-function clCreateFromGLRenderbuffer(context: Tcl_context;
-           flags: Tcl_mem_flags;
-           renderbuffer: Cardinal;
-           errcode_ret: Pcl_int): Tcl_mem; //< CL_API_SUFFIX__VERSION_1_0;
-           stdcall; external LibOpenCL;
-
-function clGetGLObjectInfo(memobj: Tcl_mem;
-           gl_object_type: Pcl_gl_object_type;
-           gl_object_name: PGLuint): Tcl_int; //< CL_API_SUFFIX__VERSION_1_0;
-           stdcall; external LibOpenCL;
-
-
-function clGetGLTextureInfo(memobj: Tcl_mem;
-           param_name: Tcl_gl_texture_info;
-           param_value_size: NativeUInt;
-           param_value: Pointer;
-           param_value_size_ret: Psize_t): Tcl_int; //< CL_API_SUFFIX__VERSION_1_0;
-           stdcall; external LibOpenCL;
-
-
-function clEnqueueAcquireGLObjects(command_queue: Tcl_command_queue;
-           num_objects: Tcl_uint;
-           mem_objects: Pcl_mem;
-           num_events_in_wait_list: Tcl_uint;
-           event_wait_list: Pcl_event;
-           event: Pcl_event): Tcl_int;  //< CL_API_SUFFIX__VERSION_1_0;
-           stdcall; external LibOpenCL;
-
-
-function clEnqueueReleaseGLObjects(command_queue: Tcl_command_queue;
-           num_objects: Tcl_uint;
-           mem_objects: Pcl_mem;
-           num_events_in_wait_list: Tcl_uint;
-           event_wait_list: Pcl_event;
-           event: Pcl_event): Tcl_int; //< CL_API_SUFFIX__VERSION_1_0;
-           stdcall; external LibOpenCL;
-
-//* Deprecated OpenCL 1.1 APIs *//
-(* function clCreateFromGLTexture2D(); *)
-(* function clCreateFromGLTexture3D(); *)
-const
-//* cl_khr_gl_sharing extension  *//
-
-  cl_khr_gl_sharing =                             1;
-type
-  Tcl_gl_context_info = Tcl_uint;
-  Pcl_gl_context_info = ^Tcl_gl_context_info;
-
-const
-//* Additional Error Codes  *//
-CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR =       -1000;
-
-//* cl_gl_context_info  *//
-CL_CURRENT_DEVICE_FOR_GL_CONTEXT_KHR =          $2006;
-CL_DEVICES_FOR_GL_CONTEXT_KHR =                 $2007;
-
-//* Additional cl_context_properties  *//
-CL_GL_CONTEXT_KHR =                             $2008;
-CL_EGL_DISPLAY_KHR =                            $2009;
-CL_GLX_DISPLAY_KHR =                            $200A;
-CL_WGL_HDC_KHR =                                $200B;
-CL_CGL_SHAREGROUP_KHR =                         $200C;
-
-function clGetGLContextInfoKHR(properties: Tcl_context_properties;
-           param_name: Tcl_gl_context_info;
-           param_value_size: NativeUInt;
-           param_value: Pointer;
-           param_value_size_ret: Psize_t): Tcl_int;
-           stdcall; external LibOpenCL;
-
-(*
-function clGetGLContextInfoKHR_fn(properties: Pcl_context_properties;
-         param_name: Tcl_gl_context_info;
-         param_value_size: Tsize_t;
-         param_value: Pointer;
-         param_value_size_ret: Psize_t): Tcl_int;
-         stdcall; external LibOpenCL;
-*)
-
-//--------------------------------------------------------------------
-implementation
-//--------------------------------------------------------------------
-
-end.

+ 0 - 1574
Source/FMX/OpenCLx.Import.pas

@@ -1,1574 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-(*
-   Conversion of OpenCL cl.h header file into CL.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.
- *)
-
-unit OpenCLx.Import;
-
-interface
-
-uses
-  Winapi.Windows,
-  OpenCLx.Platform;
-
-const
-  {$IFDEF MSWINDOWS}
-  LibOpenCL = 'OpenCL.dll';
- {$ELSE}
-  LibOpenCL = 'OpenCL.so';
- {$ENDIF}
-
-type
-  T_cl_platform_id = record end;
-  Tcl_platform_id = ^T_cl_platform_id;
-  Pcl_platform_id = ^Tcl_platform_id;
-  T_cl_device_id = record end;
-  Tcl_device_id = ^T_cl_device_id;
-  Pcl_device_id = ^Tcl_device_id;
-  T_cl_context = record end;
-  Tcl_context = ^T_cl_context;
-  Pcl_context = ^Tcl_context;
-  T_cl_command_queue = record end;
-  Tcl_command_queue = ^T_cl_command_queue;
-  Pcl_command_queue = ^Tcl_command_queue;
-  T_cl_mem = record end;
-  Tcl_mem = ^T_cl_mem;
-  Pcl_mem = ^Tcl_mem;
-  T_cl_program = record end;
-  Tcl_program = ^T_cl_program;
-  Pcl_program = ^Tcl_program;
-  T_cl_kernel = record end;
-  Tcl_kernel = ^T_cl_kernel;
-  Pcl_kernel = ^Tcl_kernel;
-  T_cl_event = record end;
-  Tcl_event = ^T_cl_event;
-  Pcl_event = ^Tcl_event;
-  T_cl_sampler = record end;
-  Tcl_sampler = ^T_cl_sampler;
-  Pcl_sampler = ^Tcl_sampler;
-
-  Tcl_bool = Tcl_uint;  //* WARNING!  Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. *//
-  Pcl_bool = ^Tcl_bool;
-  Tcl_bitfield = Tcl_ulong;
-  Pcl_bitfield = ^Tcl_bitfield;
-  Tcl_device_type = Tcl_bitfield;
-  Pcl_device_type = ^Tcl_device_type;
-  Tcl_platform_info = Tcl_uint;
-  Pcl_platform_info = ^Tcl_platform_info;
-  Tcl_device_info = Tcl_uint;
-  Pcl_device_info = ^Tcl_device_info;
-  Tcl_device_fp_config = Tcl_bitfield;
-  Pcl_device_fp_config = ^Tcl_device_fp_config;
-  Tcl_device_mem_cache_type = Tcl_uint;
-  Pcl_device_mem_cache_type = ^Tcl_device_mem_cache_type;
-  Tcl_device_local_mem_type = Tcl_uint;
-  Pcl_device_local_mem_type = ^Tcl_device_local_mem_type;
-  Tcl_device_exec_capabilities = Tcl_bitfield;
-  Pcl_device_exec_capabilities = ^Tcl_device_exec_capabilities;
-  Tcl_device_svm_capabilities = Tcl_bitfield;
-  Pcl_device_svm_capabilities = ^Tcl_device_svm_capabilities;
-  Tcl_command_queue_properties = Tcl_bitfield;
-  Pcl_command_queue_properties = ^Tcl_command_queue_properties;
-  Tcl_device_partition_property = intptr_t;
-  Pcl_device_partition_property = ^Tcl_device_partition_property;
-  Tcl_device_affinity_domain = Tcl_bitfield;
-  Pcl_device_affinity_domain = ^Tcl_device_affinity_domain;
-  Tcl_context_properties = intptr_t;
-  Pcl_context_properties = ^Tcl_context_properties;
-  Tcl_context_info = Tcl_uint;
-  Pcl_context_info = ^Tcl_context_info;
-  Tcl_queue_properties = Tcl_bitfield;
-  Pcl_queue_properties = ^Tcl_queue_properties;
-  Tcl_command_queue_info = Tcl_uint;
-  Pcl_command_queue_info = ^Tcl_command_queue_info;
-  Tcl_channel_order = Tcl_uint;
-  Pcl_channel_order = ^Tcl_channel_order;
-  Tcl_channel_type = Tcl_uint;
-  Pcl_channel_type = ^Tcl_channel_type;
-  Tcl_mem_flags = Tcl_bitfield;
-  Pcl_mem_flags = ^Tcl_mem_flags;
-  Tcl_svm_mem_flags = Tcl_bitfield;
-  Pcl_svm_mem_flags = ^Tcl_svm_mem_flags;
-  Tcl_mem_object_type = Tcl_uint;
-  Pcl_mem_object_type = ^Tcl_mem_object_type;
-  Tcl_mem_info = Tcl_uint;
-  Pcl_mem_info = ^Tcl_mem_info;
-  Tcl_mem_migration_flag = Tcl_bitfield;
-  Pcl_mem_migration_flag = ^Tcl_mem_migration_flag;
-  Tcl_image_info = Tcl_uint;
-  Pcl_image_info = ^Tcl_image_info;
-  Tcl_buffer_create_type = Tcl_uint;
-  Pcl_buffer_create_type = ^Tcl_buffer_create_type;
-  Tcl_addressing_mode = Tcl_uint;
-  Pcl_addressing_mode = ^Tcl_addressing_mode;
-  Tcl_filter_mode = Tcl_uint;
-  Pcl_filter_mode = ^Tcl_filter_mode;
-  Tcl_sampler_info = Tcl_uint;
-  Pcl_sampler_info = ^Tcl_sampler_info;
-  Tcl_map_flags = Tcl_bitfield;
-  Pcl_map_flags = ^Tcl_map_flags;
-  Tcl_pipe_properties = intptr_t;
-  Pcl_pipe_properties = ^Tcl_pipe_properties;
-  Tcl_pipe_info = Tcl_uint;
-  Pcl_pipe_info = ^Tcl_pipe_info;
-  Tcl_program_info = Tcl_uint;
-  Pcl_program_info = ^Tcl_program_info;
-  Tcl_program_build_info = Tcl_uint;
-  Pcl_program_build_info = ^Tcl_program_build_info;
-  Tcl_program_binary_type = Tcl_uint;
-  Pcl_program_binary_type = ^Tcl_program_binary_type;
-  Tcl_build_status = Tcl_int;
-  Pcl_build_status = ^Tcl_build_status;
-  Tcl_kernel_info = Tcl_uint;
-  Pcl_kernel_info = ^Tcl_kernel_info;
-  Tcl_kernel_arg_info = Tcl_uint;
-  Pcl_kernel_arg_info = ^Tcl_kernel_arg_info;
-  Tcl_kernel_arg_address_qualifier = Tcl_uint;
-  Pcl_kernel_arg_address_qualifier = ^Tcl_kernel_arg_address_qualifier;
-  Tcl_kernel_arg_access_qualifier = Tcl_uint;
-  Pcl_kernel_arg_access_qualifier = ^Tcl_kernel_arg_access_qualifier;
-  Tcl_kernel_arg_type_qualifier = Tcl_bitfield;
-  Pcl_kernel_arg_type_qualifier = ^Tcl_kernel_arg_type_qualifier;
-  Tcl_kernel_work_group_info = Tcl_uint;
-  Pcl_kernel_work_group_info = ^Tcl_kernel_work_group_info;
-  Tcl_kernel_sub_group_info = Tcl_uint;
-  Pcl_kernel_sub_group_info = ^Tcl_kernel_sub_group_info;
-  Tcl_event_info = Tcl_uint;
-  Pcl_event_info = ^Tcl_event_info;
-  Tcl_command_type = Tcl_uint;
-  Pcl_command_type = ^Tcl_command_type;
-  Tcl_profiling_info = Tcl_uint;
-  Pcl_profiling_info = ^Tcl_profiling_info;
-  Tcl_sampler_properties = Tcl_bitfield;
-  Pcl_sampler_properties = ^Tcl_sampler_properties;
-  Tcl_kernel_exec_info = Tcl_uint;
-  Pcl_kernel_exec_info = ^Tcl_kernel_exec_info;
-
-type
-  Tcl_image_format = packed record
-    image_channel_order: Tcl_channel_order;
-    image_channel_data_type: Tcl_channel_type;
-  end;
-  Pcl_image_format = ^Tcl_image_format;
-
-  Tcl_image_desc = packed record
-    image_type: Tcl_mem_object_type;
-    image_width: NativeUInt;
-    image_height: NativeUInt;
-    image_depth: NativeUInt;
-    image_array_size: NativeUInt;
-    image_row_pitch: NativeUInt;
-    image_slice_pitch: NativeUInt;
-    num_mip_levels: Tcl_uint;
-    num_samples: Tcl_uint;
-    case Word of
-     1: (buffer: Pcl_mem;);
-     2: (mem_object: Pcl_mem;);
-  end;
-  Pcl_image_desc = ^Tcl_image_desc;
-
-  Tcl_buffer_region = packed record
-    origin: NativeUInt;
-    size: NativeUInt;
-  end;
-  Pcl_buffer_region = ^Tcl_buffer_region;
-
-//***********************************)
-  
- 
-(* Error Codes *)
-const
-  CL_SUCCESS =                                     0;
-  CL_DEVICE_NOT_FOUND =                           -1;
-  CL_DEVICE_NOT_AVAILABLE =                       -2;
-  CL_COMPILER_NOT_AVAILABLE =                     -3;
-  CL_MEM_OBJECT_ALLOCATION_FAILURE =              -4;
-  CL_OUT_OF_RESOURCES =                           -5;
-  CL_OUT_OF_HOST_MEMORY =                         -6;
-  CL_PROFILING_INFO_NOT_AVAILABLE =               -7;
-  CL_MEM_COPY_OVERLAP =                           -8;
-  CL_IMAGE_FORMAT_MISMATCH =                      -9;
-  CL_IMAGE_FORMAT_NOT_SUPPORTED =                -10;
-  CL_BUILD_PROGRAM_FAILURE =                     -11;
-  CL_MAP_FAILURE =                               -12;
-  CL_MISALIGNED_SUB_BUFFER_OFFSET =              -13;
-  CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST = -14;
-  CL_COMPILE_PROGRAM_FAILURE =                   -15;
-  CL_LINKER_NOT_AVAILABLE =                      -16;
-  CL_LINK_PROGRAM_FAILURE =                      -17;
-  CL_DEVICE_PARTITION_FAILED =                   -18;
-  CL_KERNEL_ARG_INFO_NOT_AVAILABLE =             -19;
-
-  CL_INVALID_VALUE =                             -30;
-  CL_INVALID_DEVICE_TYPE =                       -31;
-  CL_INVALID_PLATFORM =                          -32;
-  CL_INVALID_DEVICE =                            -33;
-  CL_INVALID_CONTEXT =                           -34;
-  CL_INVALID_QUEUE_PROPERTIES =                  -35;
-  CL_INVALID_COMMAND_QUEUE =                     -36;
-  CL_INVALID_HOST_PTR =                          -37;
-  CL_INVALID_MEM_OBJECT =                        -38;
-  CL_INVALID_IMAGE_FORMAT_DESCRIPTOR =           -39;
-  CL_INVALID_IMAGE_SIZE =                        -40;
-  CL_INVALID_SAMPLER =                           -41;
-  CL_INVALID_BINARY =                            -42;
-  CL_INVALID_BUILD_OPTIONS =                     -43;
-  CL_INVALID_PROGRAM =                           -44;
-  CL_INVALID_PROGRAM_EXECUTABLE =                -45;
-  CL_INVALID_KERNEL_NAME =                       -46;
-  CL_INVALID_KERNEL_DEFINITION =                 -47;
-  CL_INVALID_KERNEL =                            -48;
-  CL_INVALID_ARG_INDEX =                         -49;
-  CL_INVALID_ARG_VALUE =                         -50;
-  CL_INVALID_ARG_SIZE =                          -51;
-  CL_INVALID_KERNEL_ARGS =                       -52;
-  CL_INVALID_WORK_DIMENSION =                    -53;
-  CL_INVALID_WORK_GROUP_SIZE =                   -54;
-  CL_INVALID_WORK_ITEM_SIZE =                    -55;
-  CL_INVALID_GLOBAL_OFFSET =                     -56;
-  CL_INVALID_EVENT_WAIT_LIST =                   -57;
-  CL_INVALID_EVENT =                             -58;
-  CL_INVALID_OPERATION =                         -59;
-  CL_INVALID_GL_OBJECT =                         -60;
-  CL_INVALID_BUFFER_SIZE =                       -61;
-  CL_INVALID_MIP_LEVEL =                         -62;
-  CL_INVALID_GLOBAL_WORK_SIZE =                  -63;
-  CL_INVALID_PROPERTY =                          -64;
-  CL_INVALID_IMAGE_DESCRIPTOR =                  -65;
-  CL_INVALID_COMPILER_OPTIONS =                  -66;
-  CL_INVALID_LINKER_OPTIONS =                    -67;
-  CL_INVALID_DEVICE_PARTITION_COUNT =            -68;
-  CL_INVALID_PIPE_SIZE =                         -69;
-  CL_INVALID_DEVICE_QUEUE =                      -70;
-  CL_INVALID_SPEC_ID =                           -71;
-  CL_MAX_SIZE_RESTRICTION_EXCEEDED =             -72;
-
-  (* OpenCL Version *)
-  CL_VERSION_1_0 =                                 1;
-  CL_VERSION_1_1 =                                 1;
-  CL_VERSION_1_2 =                                 1;
-  CL_VERSION_2_0 =                                 1;
-  CL_VERSION_2_1 =                                 1;
-  CL_VERSION_2_2 =                                 1;
-
-  (* cl_bool *)
-  CL_FALSE =                                       0;
-  CL_TRUE =                                        1;
-  CL_BLOCKING =                                    CL_TRUE;
-  CL_NON_BLOCKING =                                CL_FALSE;
-
-  (* cl_platform_info *)
-  CL_PLATFORM_PROFILE =                            $0900;
-  CL_PLATFORM_VERSION =                            $0901;
-  CL_PLATFORM_NAME =                               $0902;
-  CL_PLATFORM_VENDOR =                             $0903;
-  CL_PLATFORM_EXTENSIONS =                         $0904;
-  CL_PLATFORM_HOST_TIMER_RESOLUTION =              $0905;
-
-  (* cl_device_type - bitfield *)
-  CL_DEVICE_TYPE_DEFAULT =                         (1 shl 0);
-  CL_DEVICE_TYPE_CPU =                             (1 shl 1);
-  CL_DEVICE_TYPE_GPU =                             (1 shl 2);
-  CL_DEVICE_TYPE_ACCELERATOR =                     (1 shl 3);
-  CL_DEVICE_TYPE_CUSTOM =                          (1 shl 4);
-  CL_DEVICE_TYPE_ALL =                             $FFFFFFFF;
-
-  (* cl_device_info *)
-  CL_DEVICE_TYPE =                                 $1000;
-  CL_DEVICE_VENDOR_ID =                            $1001;
-  CL_DEVICE_MAX_COMPUTE_UNITS =                    $1002;
-  CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS =             $1003;
-  CL_DEVICE_MAX_WORK_GROUP_SIZE =                  $1004;
-  CL_DEVICE_MAX_WORK_ITEM_SIZES =                  $1005;
-  CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR =          $1006;
-  CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT =         $1007;
-  CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT =           $1008;
-  CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG =          $1009;
-  CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT =         $100A;
-  CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE =        $100B;
-  CL_DEVICE_MAX_CLOCK_FREQUENCY =                  $100C;
-  CL_DEVICE_ADDRESS_BITS =                         $100D;
-  CL_DEVICE_MAX_READ_IMAGE_ARGS =                  $100E;
-  CL_DEVICE_MAX_WRITE_IMAGE_ARGS =                 $100F;
-  CL_DEVICE_MAX_MEM_ALLOC_SIZE =                   $1010;
-  CL_DEVICE_IMAGE2D_MAX_WIDTH =                    $1011;
-  CL_DEVICE_IMAGE2D_MAX_HEIGHT =                   $1012;
-  CL_DEVICE_IMAGE3D_MAX_WIDTH =                    $1013;
-  CL_DEVICE_IMAGE3D_MAX_HEIGHT =                   $1014;
-  CL_DEVICE_IMAGE3D_MAX_DEPTH =                    $1015;
-  CL_DEVICE_IMAGE_SUPPORT =                        $1016;
-  CL_DEVICE_MAX_PARAMETER_SIZE =                   $1017;
-  CL_DEVICE_MAX_SAMPLERS =                         $1018;
-  CL_DEVICE_MEM_BASE_ADDR_ALIGN =                  $1019;
-  CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE =             $101A;
-  CL_DEVICE_SINGLE_FP_CONFIG =                     $101B;
-  CL_DEVICE_GLOBAL_MEM_CACHE_TYPE =                $101C;
-  CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE =            $101D;
-  CL_DEVICE_GLOBAL_MEM_CACHE_SIZE =                $101E;
-  CL_DEVICE_GLOBAL_MEM_SIZE =                      $101F;
-  CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE =             $1020;
-  CL_DEVICE_MAX_CONSTANT_ARGS =                    $1021;
-  CL_DEVICE_LOCAL_MEM_TYPE =                       $1022;
-  CL_DEVICE_LOCAL_MEM_SIZE =                       $1023;
-  CL_DEVICE_ERROR_CORRECTION_SUPPORT =             $1024;
-  CL_DEVICE_PROFILING_TIMER_RESOLUTION =           $1025;
-  CL_DEVICE_ENDIAN_LITTLE =                        $1026;
-  CL_DEVICE_AVAILABLE =                            $1027;
-  CL_DEVICE_COMPILER_AVAILABLE =                   $1028;
-  CL_DEVICE_EXECUTION_CAPABILITIES =               $1029;
-  CL_DEVICE_QUEUE_PROPERTIES =                     $102A;  (* deprecated *) 
-  CL_DEVICE_QUEUE_ON_HOST_PROPERTIES =             $102A;
-  CL_DEVICE_NAME = 	                               $102B;
-  CL_DEVICE_VENDOR =                               $102C;
-  CL_DRIVER_VERSION =                              $102D;
-  CL_DEVICE_PROFILE =                              $102E;
-  CL_DEVICE_VERSION =                              $102F;
-  CL_DEVICE_EXTENSIONS =                           $1030;
-  CL_DEVICE_PLATFORM =                             $1031;
-  CL_DEVICE_DOUBLE_FP_CONFIG =                     $1032;
-  CL_DEVICE_HALF_FP_CONFIG =                       $1033;
-  CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF =          $1034;
-  CL_DEVICE_HOST_UNIFIED_MEMORY =                  $1035;  (* deprecated *)
-  CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR =             $1036;
-  CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT =            $1037;
-  CL_DEVICE_NATIVE_VECTOR_WIDTH_INT =              $1038;
-  CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG =             $1039;
-  CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT =            $103A;
-  CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE =           $103B;
-  CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF =             $103C;
-  CL_DEVICE_OPENCL_C_VERSION =                     $103D;
-  CL_DEVICE_LINKER_AVAILABLE =                     $103E;
-  CL_DEVICE_BUILT_IN_KERNELS =                     $103F;
-  CL_DEVICE_IMAGE_MAX_BUFFER_SIZE =                $1040;
-  CL_DEVICE_IMAGE_MAX_ARRAY_SIZE =                 $1041;
-  CL_DEVICE_PARENT_DEVICE =                        $1042;
-  CL_DEVICE_PARTITION_MAX_SUB_DEVICES =            $1043;
-  CL_DEVICE_PARTITION_PROPERTIES =                 $1044;
-  CL_DEVICE_PARTITION_AFFINITY_DOMAIN =            $1045;
-  CL_DEVICE_PARTITION_TYPE =                       $1046;
-  CL_DEVICE_REFERENCE_COUNT =                      $1047;
-  CL_DEVICE_PREFERRED_INTEROP_USER_SYNC =          $1048;
-  CL_DEVICE_PRINTF_BUFFER_SIZE =                   $1049;
-  CL_DEVICE_IMAGE_PITCH_ALIGNMENT =                $104A;
-  CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT =         $104B;
-  CL_DEVICE_MAX_READ_WRITE_IMAGE_ARGS =            $104C;
-  CL_DEVICE_MAX_GLOBAL_VARIABLE_SIZE =             $104D;
-  CL_DEVICE_QUEUE_ON_DEVICE_PROPERTIES =           $104E;
-  CL_DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE =       $104F;
-  CL_DEVICE_QUEUE_ON_DEVICE_MAX_SIZE =             $1050;
-  CL_DEVICE_MAX_ON_DEVICE_QUEUES =                 $1051;
-  CL_DEVICE_MAX_ON_DEVICE_EVENTS =                 $1052;
-  CL_DEVICE_SVM_CAPABILITIES =                     $1053;
-  CL_DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE = $1054;
-  CL_DEVICE_MAX_PIPE_ARGS =                        $1055;
-  CL_DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS =         $1056;
-  CL_DEVICE_PIPE_MAX_PACKET_SIZE =                 $1057;
-  CL_DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT =  $1058;
-  CL_DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT =    $1059;
-  CL_DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT =     $105A;
-  CL_DEVICE_IL_VERSION =                           $105B;
-  CL_DEVICE_MAX_NUM_SUB_GROUPS =                   $105C;
-  CL_DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS = $105D;
-
-  (* cl_device_fp_config - bitfield *)
-  CL_FP_DENORM =                               (1 shl 0);
-  CL_FP_INF_NAN =                              (1 shl 1);
-  CL_FP_ROUND_TO_NEAREST =                     (1 shl 2);
-  CL_FP_ROUND_TO_ZERO =                        (1 shl 3);
-  CL_FP_ROUND_TO_INF =                         (1 shl 4);
-  CL_FP_FMA =                                  (1 shl 5);
-  CL_FP_SOFT_FLOAT =                           (1 shl 6);
-  CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT =        (1 shl 7);
-
-  (* cl_device_mem_cache_type *)
-  CL_NONE =                                     $0;
-  CL_READ_ONLY_CACHE =                          $1;
-  CL_READ_WRITE_CACHE =                         $2;
-
-  (* cl_device_local_mem_type *)
-  CL_LOCAL =                                    $1;
-  CL_GLOBAL =                                   $2;
-
-  (* cl_device_exec_capabilities - bitfield *)
-  CL_EXEC_KERNEL =                              (1 shl 0);
-  CL_EXEC_NATIVE_KERNEL =                       (1 shl 1);
-
-  (* cl_command_queue_properties - bitfield *)
-  CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE =      (1 shl 0);
-  CL_QUEUE_PROFILING_ENABLE =                   (1 shl 1);
-  CL_QUEUE_ON_DEVICE =                          (1 shl 2);
-  CL_QUEUE_ON_DEVICE_DEFAULT =                  (1 shl 3);
-
-  (* cl_context_info *)
-  CL_CONTEXT_REFERENCE_COUNT =                      $1080;
-  CL_CONTEXT_DEVICES =                              $1081;
-  CL_CONTEXT_PROPERTIES =                           $1082;
-  CL_CONTEXT_NUM_DEVICES =                          $1083;
-
-  (* cl_context_properties *)
-  CL_CONTEXT_PLATFORM =                             $1084;
-  CL_CONTEXT_INTEROP_USER_SYNC =                    $1085;
-    
-  (* cl_device_partition_property *)
-  CL_DEVICE_PARTITION_EQUALLY =                     $1086;
-  CL_DEVICE_PARTITION_BY_COUNTS =                   $1087;
-  CL_DEVICE_PARTITION_BY_COUNTS_LIST_END =          $0;
-  CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN =          $1088;
-    
-  (* cl_device_affinity_domain *)
-  CL_DEVICE_AFFINITY_DOMAIN_NUMA =               (1 shl 0);
-  CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE =           (1 shl 1);
-  CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE =           (1 shl 2);
-  CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE =           (1 shl 3);
-  CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE =           (1 shl 4);
-  CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE = (1 shl 5);
-    
-  (* cl_device_svm_capabilities *)
-  CL_DEVICE_SVM_COARSE_GRAIN_BUFFER =            (1 shl 0);
-  CL_DEVICE_SVM_FINE_GRAIN_BUFFER =              (1 shl 1);
-  CL_DEVICE_SVM_FINE_GRAIN_SYSTEM =              (1 shl 2);
-  CL_DEVICE_SVM_ATOMICS =                        (1 shl 3);
-
-  (* cl_command_queue_info *)
-  CL_QUEUE_CONTEXT =                             $1090;
-  CL_QUEUE_DEVICE =                              $1091;
-  CL_QUEUE_REFERENCE_COUNT =                     $1092;
-  CL_QUEUE_PROPERTIES =                          $1093;
-  CL_QUEUE_SIZE =                                $1094;
-  CL_QUEUE_DEVICE_DEFAULT =                      $1095;
-
-  (* cl_mem_flags - bitfield *)
-  CL_MEM_READ_WRITE =                            (1 shl 0);
-  CL_MEM_WRITE_ONLY =                            (1 shl 1);
-  CL_MEM_READ_ONLY =                             (1 shl 2);
-  CL_MEM_USE_HOST_PTR =                          (1 shl 3);
-  CL_MEM_ALLOC_HOST_PTR =                        (1 shl 4);
-  CL_MEM_COPY_HOST_PTR =                         (1 shl 5);
-  (* reserved                                   (1 shl 6);  *)
-  CL_MEM_HOST_WRITE_ONLY =                       (1 shl 7);
-  CL_MEM_HOST_READ_ONLY =                        (1 shl 8);
-  CL_MEM_HOST_NO_ACCESS =                        (1 shl 9);
-  CL_MEM_SVM_FINE_GRAIN_BUFFER =                 (1 shl 10); (* used by cl_svm_mem_flags only *)
-  CL_MEM_SVM_ATOMICS =                           (1 shl 11); (* used by cl_svm_mem_flags only *)
-  CL_MEM_KERNEL_READ_AND_WRITE =                 (1 shl 12);
-
-  (* cl_mem_migration_flags - bitfield *)
-  CL_MIGRATE_MEM_OBJECT_HOST =                   (1 shl 0);
-  CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED =      (1 shl 1);
-
-  (* cl_channel_order *)
-  CL_R =                                          $10B0;
-  CL_A =                                          $10B1;
-  CL_RG =                                         $10B2;
-  CL_RA =                                         $10B3;
-  CL_RGB =                                        $10B4;
-  CL_RGBA =                                       $10B5;
-  CL_BGRA =                                       $10B6;
-  CL_ARGB =                                       $10B7;
-  CL_INTENSITY =                                  $10B8;
-  CL_LUMINANCE =                                  $10B9;
-  CL_Rx =                                         $10BA;
-  CL_RGx =                                        $10BB;
-  CL_RGBx =                                       $10BC;
-  CL_DEPTH =                                      $10BD;
-  CL_DEPTH_STENCIL =                              $10BE;
-  CL_sRGB =                                       $10BF;
-  CL_sRGBx =                                      $10C0;
-  CL_sRGBA =                                      $10C1;
-  CL_sBGRA =                                      $10C2;
-  CL_ABGR =                                       $10C3;
-
-  //* cl_channel_type *//
-  CL_SNORM_INT8 =                                 $10D0;
-  CL_SNORM_INT16 =                                $10D1;
-  CL_UNORM_INT8 =                                 $10D2;
-  CL_UNORM_INT16 =                                $10D3;
-  CL_UNORM_SHORT_565 =                            $10D4;
-  CL_UNORM_SHORT_555 =                            $10D5;
-  CL_UNORM_INT_101010 =                           $10D6;
-  CL_SIGNED_INT8 =                                $10D7;
-  CL_SIGNED_INT16 =                               $10D8;
-  CL_SIGNED_INT32 =                               $10D9;
-  CL_UNSIGNED_INT8 =                              $10DA;
-  CL_UNSIGNED_INT16 =                             $10DB;
-  CL_UNSIGNED_INT32 =                             $10DC;
-  CL_HALF_FLOAT =                                 $10DD;
-  CL_FLOAT =                                      $10DE;
-  CL_UNORM_INT24 =                                $10DF;
-  CL_UNORM_INT_101010_2 =                         $10E0;
-
-  (* cl_mem_object_type *)
-  CL_MEM_OBJECT_BUFFER =                          $10F0;
-  CL_MEM_OBJECT_IMAGE2D =                         $10F1;
-  CL_MEM_OBJECT_IMAGE3D =                         $10F2;
-  CL_MEM_OBJECT_IMAGE2D_ARRAY =                   $10F3;
-  CL_MEM_OBJECT_IMAGE1D =                         $10F4;
-  CL_MEM_OBJECT_IMAGE1D_ARRAY =                   $10F5;
-  CL_MEM_OBJECT_IMAGE1D_BUFFER =                  $10F6;
-  CL_MEM_OBJECT_PIPE =                            $10F7;
-
-  (* cl_mem_info *)
-  CL_MEM_TYPE =                                   $1100;
-  CL_MEM_FLAGS =                                  $1101;
-  CL_MEM_SIZE =                                   $1102;
-  CL_MEM_HOST_PTR =                               $1103;
-  CL_MEM_MAP_COUNT =                              $1104;
-  CL_MEM_REFERENCE_COUNT =                        $1105;
-  CL_MEM_CONTEXT =                                $1106;
-  CL_MEM_ASSOCIATED_MEMOBJECT =                   $1107;
-  CL_MEM_OFFSET =                                 $1108;
-  CL_MEM_USES_SVM_POINTER =                       $1109;
-
-  (* cl_image_info *)
-  CL_IMAGE_FORMAT =                               $1110;
-  CL_IMAGE_ELEMENT_SIZE =                         $1111;
-  CL_IMAGE_ROW_PITCH =                            $1112;
-  CL_IMAGE_SLICE_PITCH =                          $1113;
-  CL_IMAGE_WIDTH =                                $1114;
-  CL_IMAGE_HEIGHT =                               $1115;
-  CL_IMAGE_DEPTH =                                $1116;
-  CL_IMAGE_ARRAY_SIZE =                           $1117;
-  CL_IMAGE_BUFFER =                               $1118;
-  CL_IMAGE_NUM_MIP_LEVELS =                       $1119;
-  CL_IMAGE_NUM_SAMPLES =                          $111A;
-    
-  (* cl_pipe_info *)
-  CL_PIPE_PACKET_SIZE =                           $1120;
-  CL_PIPE_MAX_PACKETS =                           $1121;
-
-  (* cl_addressing_mode *)
-  CL_ADDRESS_NONE =                               $1130;
-  CL_ADDRESS_CLAMP_TO_EDGE =                      $1131;
-  CL_ADDRESS_CLAMP =                              $1132;
-  CL_ADDRESS_REPEAT =                             $1133;
-  CL_ADDRESS_MIRRORED_REPEAT =                    $1134;
-
-  (* cl_filter_mode *)
-  CL_FILTER_NEAREST =                             $1140;
-  CL_FILTER_LINEAR =                              $1141;
-
-  (* cl_sampler_info *)
-  CL_SAMPLER_REFERENCE_COUNT =                    $1150;
-  CL_SAMPLER_CONTEXT =                            $1151;
-  CL_SAMPLER_NORMALIZED_COORDS =                  $1152;
-  CL_SAMPLER_ADDRESSING_MODE =                    $1153;
-  CL_SAMPLER_FILTER_MODE =                        $1154;
-  CL_SAMPLER_MIP_FILTER_MODE =                    $1155;
-  CL_SAMPLER_LOD_MIN =                            $1156;
-  CL_SAMPLER_LOD_MAX =                            $1157;
-
-  (* cl_map_flags - bitfield *)
-  CL_MAP_READ =                                   (1 shl 0);
-  CL_MAP_WRITE =                                  (1 shl 1);
-  CL_MAP_WRITE_INVALIDATE_REGION  =               (1 shl 2);
-
-  (* cl_program_info *)
-  CL_PROGRAM_REFERENCE_COUNT =                    $1160;
-  CL_PROGRAM_CONTEXT =                            $1161;
-  CL_PROGRAM_NUM_DEVICES =                        $1162;
-  CL_PROGRAM_DEVICES =                            $1163;
-  CL_PROGRAM_SOURCE =                             $1164;
-  CL_PROGRAM_BINARY_SIZES =                       $1165;
-  CL_PROGRAM_BINARIES =                           $1166;
-  CL_PROGRAM_NUM_KERNELS =                        $1167;
-  CL_PROGRAM_KERNEL_NAMES =                       $1168;
-  CL_PROGRAM_IL =                                 $1169;
-  CL_PROGRAM_SCOPE_GLOBAL_CTORS_PRESENT =         $116A;
-  CL_PROGRAM_SCOPE_GLOBAL_DTORS_PRESENT =         $116B;
-
-  (* cl_program_build_info *)
-  CL_PROGRAM_BUILD_STATUS =     			      $1181;
-  CL_PROGRAM_BUILD_OPTIONS =                      $1182;
-  CL_PROGRAM_BUILD_LOG =                          $1183;
-  CL_PROGRAM_BINARY_TYPE =                        $1184;
-  CL_PROGRAM_BUILD_GLOBAL_VARIABLE_TOTAL_SIZE =   $1185;
-
-  (* cl_program_binary_type *)
-  CL_PROGBRAM_BINARY_TYPE_NONE =                  $0;
-  CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT =        $1;
-  CL_PROGRAM_BINARY_TYPE_LIBRARY =                $2;
-  CL_PROGRAM_BINARY_TYPE_EXECUTABLE =             $4;
-
-  (* cl_build_status *)
-  CL_BUILD_SUCCESS =                               0;
-  CL_BUILD_NONE =                                 -1;
-  CL_BUILD_ERROR =                                -2;
-  CL_BUILD_IN_PROGRESS =                          -3;
-
-  (* cl_kernel_info *)
-  CL_KERNEL_FUNCTION_NAME =                       $1190;
-  CL_KERNEL_NUM_ARGS =                            $1191;
-  CL_KERNEL_REFERENCE_COUNT =                     $1192;
-  CL_KERNEL_CONTEXT =                             $1193;
-  CL_KERNEL_PROGRAM =                             $1194;
-  CL_KERNEL_ATTRIBUTES =                          $1195;
-  CL_KERNEL_MAX_NUM_SUB_GROUPS =                  $11B9;
-  CL_KERNEL_COMPILE_NUM_SUB_GROUPS =              $11BA;
-
-  (* cl_kernel_arg_info *)
-  CL_KERNEL_ARG_ADDRESS_QUALIFIER =               $1196;
-  CL_KERNEL_ARG_ACCESS_QUALIFIER =                $1197;
-  CL_KERNEL_ARG_TYPE_NAME =                       $1198;
-  CL_KERNEL_ARG_TYPE_QUALIFIER =                  $1199;
-  CL_KERNEL_ARG_NAME =                            $119A;
-
-  (* cl_kernel_arg_address_qualifier *)
-  CL_KERNEL_ARG_ADDRESS_GLOBAL =                  $119B;
-  CL_KERNEL_ARG_ADDRESS_LOCAL =                   $119C;
-  CL_KERNEL_ARG_ADDRESS_CONSTANT =                $119D;
-  CL_KERNEL_ARG_ADDRESS_PRIVATE =                 $119E;
-
-  (* cl_kernel_arg_access_qualifier *)
-  CL_KERNEL_ARG_ACCESS_READ_ONLY =                $11A0;
-  CL_KERNEL_ARG_ACCESS_WRITE_ONLY =               $11A1;
-  CL_KERNEL_ARG_ACCESS_READ_WRITE =               $11A2;
-  CL_KERNEL_ARG_ACCESS_NONE =                     $11A3;
-
-  (* cl_kernel_arg_type_qualifer *)
-  CL_KERNEL_ARG_TYPE_NONE =                       0;
-  CL_KERNEL_ARG_TYPE_CONST =                   	  (1 shl 0);
-  CL_KERNEL_ARG_TYPE_RESTRICT =                   (1 shl 1);
-  CL_KERNEL_ARG_TYPE_VOLATILE =                   (1 shl 2);
-  CL_KERNEL_ARG_TYPE_PIPE =                       (1 shl 3);
-
-  (* cl_kernel_work_group_info *)
-  CL_KERNEL_WORK_GROUP_SIZE =                     $11B0;
-  CL_KERNEL_COMPILE_WORK_GROUP_SIZE =             $11B1;
-  CL_KERNEL_LOCAL_MEM_SIZE =                      $11B2;
-  CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE =  $11B3;
-  CL_KERNEL_PRIVATE_MEM_SIZE =                    $11B4;
-  CL_KERNEL_GLOBAL_WORK_SIZE =                    $11B5;
-
-  (* cl_kernel_sub_group_info *)
-  CL_KERNEL_MAX_SUB_GROUP_SIZE_FOR_NDRANGE =      $2033;
-  CL_KERNEL_SUB_GROUP_COUNT_FOR_NDRANGE =         $2034;
-  CL_KERNEL_LOCAL_SIZE_FOR_SUB_GROUP_COUNT =      $11B8;
-
-  (* cl_kernel_exec_info *)
-  CL_KERNEL_EXEC_INFO_SVM_PTRS =                  $11B6;
-  CL_KERNEL_EXEC_INFO_SVM_FINE_GRAIN_SYSTEM =     $11B7;
-  (* cl_event_info  *)
-  CL_EVENT_COMMAND_QUEUE =                        $11D0;
-  CL_EVENT_COMMAND_TYPE =                         $11D1;
-  CL_EVENT_REFERENCE_COUNT =                      $11D2;
-  CL_EVENT_COMMAND_EXECUTION_STATUS =             $11D3;
-  CL_EVENT_CONTEXT =                              $11D4;
-
-  (* cl_command_type *)
-  CL_COMMAND_NDRANGE_KERNEL =                     $11F0;
-  CL_COMMAND_TASK =                               $11F1;
-  CL_COMMAND_NATIVE_KERNEL =                      $11F2;
-  CL_COMMAND_READ_BUFFER =                        $11F3;
-  CL_COMMAND_WRITE_BUFFER =                       $11F4;
-  CL_COMMAND_COPY_BUFFER =                        $11F5;
-  CL_COMMAND_READ_IMAGE =                         $11F6;
-  CL_COMMAND_WRITE_IMAGE =                        $11F7;
-  CL_COMMAND_COPY_IMAGE =                         $11F8;
-  CL_COMMAND_COPY_IMAGE_TO_BUFFER =               $11F9;
-  CL_COMMAND_COPY_BUFFER_TO_IMAGE =               $11FA;
-  CL_COMMAND_MAP_BUFFER =                         $11FB;
-  CL_COMMAND_MAP_IMAGE =                          $11FC;
-  CL_COMMAND_UNMAP_MEM_OBJECT =                   $11FD;
-  CL_COMMAND_MARKER =                             $11FE;
-  CL_COMMAND_ACQUIRE_GL_OBJECTS =                 $11FF;
-  CL_COMMAND_RELEASE_GL_OBJECTS =                 $1200;
-  CL_COMMAND_READ_BUFFER_RECT =                   $1201;
-  CL_COMMAND_WRITE_BUFFER_RECT =                  $1202;
-  CL_COMMAND_COPY_BUFFER_RECT =                   $1203;
-  CL_COMMAND_USER =                               $1204;
-  CL_COMMAND_BARRIER =                            $1205;
-  CL_COMMAND_MIGRATE_MEM_OBJECTS =                $1206;
-  CL_COMMAND_FILL_BUFFER =                        $1207;
-  CL_COMMAND_FILL_IMAGE =                         $1208;
-  CL_COMMAND_SVM_FREE =                           $1209;
-  CL_COMMAND_SVM_MEMCPY =                         $120A;
-  CL_COMMAND_SVM_MEMFILL =                        $120B;
-  CL_COMMAND_SVM_MAP =                            $120C;
-  CL_COMMAND_SVM_UNMAP =                          $120D;
-
-  (* command execution status *)
-  CL_COMPLETE =                                   $0;
-  CL_RUNNING =                                    $1;
-  CL_SUBMITTED =                                  $2;
-  CL_QUEUED =                                     $3;
-
-  (* cl_buffer_create_type  *)
-  CL_BUFFER_CREATE_TYPE_REGION =                  $1220;
-
-  (* cl_profiling_info *)
-  CL_PROFILING_COMMAND_QUEUED =                   $1280;
-  CL_PROFILING_COMMAND_SUBMIT =                   $1281;
-  CL_PROFILING_COMMAND_START =                    $1282;
-  CL_PROFILING_COMMAND_END =                      $1283;
-  CL_PROFILING_COMMAND_COMPLETE =                 $1284;
-
-//******************************)
-(*** Functions                                                         ***)
-//******************************)
-
-  (* Platform API *)
-  function clGetPlatformIDs(num_entries: Tcl_uint;
-    platforms: Pcl_platform_id;
-    num_platforms: Pcl_uint): Tcl_int;     // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetPlatformInfo(cl_platform: Tcl_platform_id;
-    param_name: Tcl_platform_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int;  // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  //* Device APIs *//
-  function clGetDeviceIDs(_platform: Pcl_platform_id;
-    device_type: Tcl_device_type;
-    num_entries: Tcl_uint;
-    devices: Pcl_device_id;
-    num_devices: Pcl_uint): Tcl_int;  // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetDeviceInfo(device: Pcl_device_id;
-    param_name: Tcl_device_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int;  // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCreateSubDevices(in_device: Pcl_device_id;
-    properties: Pcl_device_partition_property;
-    num_devices: Tcl_uint;
-    out_devices: Pcl_device_id;
-  	num_devices_ret: Pcl_uint): Tcl_int;    // CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clRetainDevice(device : Pcl_device_id): Tcl_int; // CL_API_SUFFIX__VERSION_1_2
-    stdcall; external LibOpenCL;
-
-  function clReleaseDevice(device : Pcl_device_id): Tcl_int; // CL_API_SUFFIX__VERSION_1_2
-    stdcall; external LibOpenCL;
-
-  function clSetDefaultDeviceCommandQueue(context: Pcl_context;
-    device: Pcl_device_id;
-    command_queue: Pcl_command_queue): Tcl_int; //CL_API_SUFFIX__VERSION_2_1
-  stdcall; external LibOpenCL;
-
-  function clGetDeviceAndHostTimer(device: Pcl_device_id;
-    device_timestamp: Pcl_ulong;
-    host_timestamp: Pcl_ulong): Tcl_int;  //CL_API_SUFFIX__VERSION_2_1
-  stdcall; external LibOpenCL;
-
-  function clGetHostTimer(device: Pcl_device_id;
-    host_timestamp: Pcl_ulong): Tcl_int;  //CL_API_SUFFIX__VERSION_2_1
-  stdcall; external LibOpenCL;
-
-  //* Context APIs *//
-type
-  Tcl_context_notify = procedure(errinfo: PAnsiChar;
-    private_info: Pointer;
-    size: NativeUInt;
-    user_data: Pointer);
-   stdcall;
-
-
-  function clCreateContext(properties: Pcl_context_properties;
-    num_devices: Tcl_uint;
-    devices: Pcl_device_id;
-    pfn_notify: Tcl_context_notify; {const char *, const void *, size_t, void *}
-    user_data: Pointer;
-    errcode_ret: Pcl_int): Pcl_context;   // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCreateContextFromType(properties: Pcl_context_properties;
-    device_type: Tcl_device_type;
-    pfn_notify: Tcl_context_notify; {const char *, const void *, size_t, void *}
-    user_data: Pointer;
-    errcode_ret: Pcl_int): Pcl_context;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clRetainContext(context: Pcl_context): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clReleaseContext(context: Pcl_context): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetContextInfo(context: Pcl_context;
-    param_name: Tcl_context_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  //* Command Queue APIs *//
-  function clCreateCommandQueue(context: Pcl_context;
-    device: Pcl_device_id;
-    properties: Tcl_command_queue_properties;
-    errcode_ret: Pcl_int): Pcl_command_queue; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clRetainCommandQueue(command_queue: Pcl_command_queue): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clReleaseCommandQueue(command_queue: Pcl_command_queue): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-  stdcall; external LibOpenCL;
-
-  function clGetCommandQueueInfo(command_queue: Pcl_command_queue;
-    param_name: Tcl_command_queue_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-  stdcall; external LibOpenCL;
-
-  //* Memory Object APIs *//
-  function clCreateBuffer(context: Pcl_context;
-    flags: Tcl_mem_flags;
-    size: NativeUInt;
-    host_ptr: Pointer;
-    errcode_ret: Pcl_int): Pcl_mem;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCreateSubBuffer(buffer: Pcl_mem;
-    flags: Tcl_mem_flags;
-    buffer_create_type: Tcl_buffer_create_type;
-    buffer_create_info: Pointer;
-    errcode_ret: Pcl_int): Pcl_mem;   //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
-  function clCreateImage(context: Pcl_context;
-    flags: Tcl_mem_flags;
-    image_format: Pcl_image_format;
-    image_desc: Pcl_image_desc;
-    host_ptr: Pointer;
-    errcode_ret: Pcl_int): Pcl_mem; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clCreatePipe(context: Pcl_context;
-    flags: Tcl_mem_flags;
-    pipe_packet_size: Tcl_uint;
-    pipe_max_packets: Tcl_uint;
-    properties: Pcl_pipe_properties;
-    errcode_ret: Pcl_int): Pcl_mem;   //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clRetainMemObject(memobj: Pcl_mem): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clReleaseMemObject(memobj: Pcl_mem): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetSupportedImageFormats(context: Pcl_context;
-    flags: Tcl_mem_flags;
-    image_type: Tcl_mem_object_type;
-    num_entries: Tcl_uint;
-    image_formats: Pcl_image_format;
-    num_image_formats: Pcl_uint): Tcl_int;   //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetMemObjectInfo(memobj: Pcl_mem;
-    param_name: Tcl_mem_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetImageInfo(image: Pcl_mem;
-    param_name: Tcl_image_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetPipeInfo(pipe: Pcl_mem;
-    param_name: Tcl_pipe_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-type
-  Tcl_destructor_notify = procedure(memobj: Pcl_mem;
-    user_data: Pointer);
-   stdcall;
-
-  function clSetMemObjectDestructorCallback(memobj: Pcl_mem;
-     pfn_notify:   Tcl_destructor_notify; //( cl_mem /* memobj */, void* /*user_data*/),
-     user_data: Pointer): Tcl_int;     //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
-   //* SVM Allocation APIs *//
-   function clSVMAlloc(context: Pcl_context;
-     flags: Tcl_svm_mem_flags;
-     size: NativeUInt;
-     alignment: Tcl_uint): Pointer; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-   procedure clSVMFree(context: Pcl_context;
-     svm_pointer: Pointer);     //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  //* Sampler APIs *//
-  function clCreateSamplerWithProperties(context: Pcl_context;
-    normalized_coords: Pcl_sampler_properties;
-    addressing_mode: Tcl_addressing_mode;
-    errcode_ret: Pcl_int): Pcl_sampler;   //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clRetainSampler(sampler: Pcl_sampler): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clReleaseSampler(sampler: Pcl_sampler): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetSamplerInfo(sampler: Pcl_sampler;
-    param_name: Tcl_sampler_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  (* Program Object APIs *)
-  function clCreateProgramWithSource(context: Pcl_context;
-    count: Tcl_uint;
-    strings: PPAnsiChar;
-    lengths: Psize_t;
-    errcode_ret: Pcl_int): Pcl_program;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCreateProgramWithBinary(context: Pcl_context;
-    num_devices: Tcl_uint;
-    device_list: Pcl_device_id;
-    lengths: Psize_t;
-    binaries: PByte;
-    binary_status: Pcl_int;
-    errcode_ret: Pcl_int): Pcl_program;   //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCreateProgramWithBuiltInKernels(context: Pcl_context;
-    num_devices: Tcl_uint;
-    device_list: Pcl_device_id;
-    kernel_names: Pcl_char;
-    errcode_ret: Pcl_int): Pcl_program; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clCreateProgramWithIL(context: Pcl_context;
-    il: Pointer;
-    length: NativeUInt;
-    errcode_ret: Pcl_int): Pcl_program; //CL_API_SUFFIX__VERSION_2_1
-   stdcall; external LibOpenCL;
-
-  function clRetainProgram(_program: Pcl_program): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clReleaseProgram(_program: Pcl_program): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-type
-  Tcl_programbuilt_notify = procedure(_program: Pcl_program;
-    user_data: Pointer);
-   stdcall;
-
-  function clBuildProgram(_program: Pcl_program;
-    num_devices: Tcl_uint;
-    device_list: Pcl_device_id;
-    options: Pcl_char;
-    pfn_notify: Tcl_programbuilt_notify;
-    user_data: Pointer): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCompileProgram(_program: Pcl_program;
-    num_devices: Tcl_uint;
-    device_list: Pcl_device_id;
-    options: Pcl_char;
-  	num_input_headers: Tcl_uint;
-  	input_headers: Pcl_program;
-  	header_include_names: PPAnsiChar;
-    pfn_notify: Tcl_programbuilt_notify;
-    user_data: Pointer): Tcl_int; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clLinkProgram(context: Pcl_context;
-    num_devices: Tcl_uint;
-    device_list: Pcl_device_id;
-    options: Pcl_char;
-    num_input_programs: Pcl_uint;
-    input_programs: Pcl_program;
-    pfn_notify: Tcl_programbuilt_notify; //(cl_program /* program */, void * /* user_data */)
-    user_data: Pointer;
-    errcode_ret: Pcl_int): Pcl_program; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clUnloadPlatformCompiler: Tcl_int; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clGetProgramInfo(_program: Pcl_program;
-    param_name: Tcl_program_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetProgramBuildInfo(_program: Pcl_program;
-    device: Pcl_device_id;
-    param_name: Tcl_program_build_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  (* Kernel Object APIs *)
-  function clCreateKernel(_program: Pcl_program;
-    kernel_name: PAnsiChar;
-    errcode_ret: Pcl_int): Pcl_kernel; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCreateKernelsInProgram(_program: Pcl_program;
-    num_kernels: Tcl_uint;
-    kernels: Pcl_kernel;
-    num_kernels_ret: Pcl_uint): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCloneKernel(source_kernel: Pcl_kernel;
-    errocode_ret: Pcl_int): Tcl_int;   //CL_API_SUFFIX__VERSION_2_1
-   stdcall; external LibOpenCL;
-
-  function clRetainKernel(kernel: Pcl_kernel): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clReleaseKernel(kernel: Pcl_kernel): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clSetKernelArg(kernel: Pcl_kernel;
-    arg_index: Tcl_uint;
-    arg_size: NativeUInt;
-    arg_value: Pointer): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clSetKernelArgSVMPointer(kernel: Pcl_kernel;
-    arg_index: Tcl_uint;
-    arg_value: Pointer): Tcl_int; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clSetKernelExecInfo(kernel: Pcl_kernel;
-    param_name: Tcl_kernel_exec_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer): Tcl_int; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clGetKernelInfo(kernel: Pcl_kernel;
-    param_name: Tcl_kernel_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetKernelArgInfo(kernel: Pcl_kernel;
-    arg_indx: Tcl_uint;
-    param_name: Tcl_kernel_arg_info;
-	param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clGetKernelWorkGroupInfo(kernel: Pcl_kernel;
-    device: Pcl_device_id;
-    param_name: Tcl_kernel_work_group_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetKernelSubGroupInfo(kernel: Pcl_kernel;
-    device: Pcl_device_id;
-    param_name: Tcl_kernel_sub_group_info;
-    input_value_size: NativeUInt;
-    input_value: Pointer;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  //* Event Object APIs *//
-  function clWaitForEvents(num_events: Tcl_uint;
-    event_list: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clGetEventInfo(event: Pcl_event;
-    param_name: Tcl_event_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int;   //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clCreateUserEvent(context: Pcl_context;
-    errcode_ret: Pcl_int): Pcl_event;   //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
-  function clRetainEvent(event: Pcl_event): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clReleaseEvent(event: Pcl_event): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clSetUserEventStatus(event: Pcl_event;
-    execution_status: Tcl_int): Tcl_int; //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
- type
-  Tcl_event_notify = procedure(event: Pcl_event;
-    num_event: Tcl_int;
-    user_data: Pointer);
-   stdcall;
-
-  function clSetEventCallback(event: Pcl_event;
-    command_exec_callback_type: Tcl_int;
-    pfn_notify: Tcl_event_notify;
-    user_data: Pointer): Tcl_int; //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
-  (* Profiling APIs *)
-  function clGetEventProfilingInfo(event: Pcl_event;
-    param_name: Tcl_profiling_info;
-    param_value_size: NativeUInt;
-    param_value: Pointer;
-    param_value_size_ret: Psize_t): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  //* Flush and Finish APIs *//
-  function clFlush(command_queue: Pcl_command_queue): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clFinish(command_queue: Pcl_command_queue): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  //* Enqueued Commands APIs *//
-  function clEnqueueReadBuffer(command_queue: Pcl_command_queue;
-    buffer: Pcl_mem;
-    blocking_read: Tcl_bool;
-    offset: NativeUInt;
-    size: NativeUInt;
-    ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueReadBufferRect(command_queue: Pcl_command_queue;
-    buffer: Pcl_mem;
-    blocking_read: Tcl_bool;
-    buffer_offset: Psize_t;
-    host_offset: Psize_t;
-    region: Psize_t;
-    buffer_row_pitch: NativeUInt;
-    buffer_slice_pitch: NativeUInt;
-    host_row_pitch: NativeUInt;
-    host_slice_pitch: NativeUInt;
-    ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int;  //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
-  function clEnqueueWriteBuffer(command_queue: Pcl_command_queue;
-    buffer: Pcl_mem;
-    blocking_write: Tcl_bool;
-    offset: NativeUInt;
-    size: NativeUInt;
-    ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueWriteBufferRect(command_queue: Pcl_command_queue;
-    buffer: Pcl_mem;
-    blocking_write: Tcl_bool;
-    buffer_offset: Psize_t;
-    host_offset: Psize_t;
-    region: Psize_t;
-    buffer_row_pitch: NativeUInt;
-    buffer_slice_pitch: NativeUInt;
-    host_row_pitch: NativeUInt;
-    host_slice_pitch: NativeUInt;
-    ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
-  function clEnqueueFillBuffer(command_queue: Pcl_command_queue;
-    buffer: Pcl_mem;
-    pattern: Pointer;
-    pattern_size: NativeUInt;
-    offset: NativeUInt;
-    size: NativeUInt;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clEnqueueCopyBuffer(command_queue: Pcl_command_queue;
-    src_buffer: Pcl_mem;
-    dst_buffer: Pcl_mem;
-    src_offset: NativeUInt;
-    dst_offset: NativeUInt;
-    size: NativeUInt;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueCopyBufferRect(command_queue: Pcl_command_queue;
-    src_buffer: Pcl_mem;
-    dst_buffer: Pcl_mem;
-    src_offset: NativeUInt;
-    dst_offset: NativeUInt;
-    region: NativeUInt;
-    src_row_pitch: NativeUInt;
-    src_slice_pitch: NativeUInt;
-    dst_row_pitch: NativeUInt;
-    dst_slice_pitch: NativeUInt;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_1
-   stdcall; external LibOpenCL;
-
-  function clEnqueueReadImage(command_queue: Pcl_command_queue;
-    image: Pcl_mem;
-    blocking_read: Tcl_bool;
-    origin: Psize_t; // x3
-    region: Psize_t; // x3
-    row_pitch: NativeUInt;
-    slice_pitch: NativeUInt;
-    ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int;  // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueWriteImage(command_queue: Pcl_command_queue;
-    image: Pcl_mem;
-    blocking_write: Tcl_bool;
-    origin: Psize_t; // x3
-    region: Psize_t; // x3
-    input_row_pitch: NativeUInt;
-    input_slice_pitch: NativeUInt;
-    ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int;  // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-
-  function clEnqueueFillImage(command_queue: Pcl_command_queue;
-    image: Pcl_mem;
-    fill_color: Pointer;
-    origin: Psize_t; //x3
-    region: Psize_t; //x3
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; // CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clEnqueueCopyImage(command_queue: Pcl_command_queue;
-    src_image: Pcl_mem;
-    dst_image: Pcl_mem;
-    src_origin: Psize_t; //x3
-    dst_origin: Psize_t; //x3
-    region: Psize_t; //x3
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int;  // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueCopyImageToBuffer(command_queue: Pcl_command_queue;
-    src_image: Pcl_mem;
-    dst_buffer: Pcl_mem;
-    src_origin: Psize_t; //x3
-    region: Psize_t; //x3
-    dst_offset: NativeUInt;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; // CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueCopyBufferToImage(command_queue: Pcl_command_queue;
-    src_buffer: Pcl_mem;
-    dst_image: Pcl_mem;
-    src_offset: NativeUInt;
-    dst_origin: Psize_t; //x3
-    region: Psize_t; //x3
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueMapBuffer(command_queue: Pcl_command_queue;
-    buffer: Pcl_mem;
-    blocking_map: Pcl_bool;
-    map_flags: Tcl_map_flags;
-    offset: NativeUInt;
-    cb: NativeUInt;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event;
-    errcode_ret: Pcl_int): Pointer; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueMapImage(command_queue: Pcl_command_queue;
-    image: Pcl_mem;
-    blocking_map: Tcl_bool;
-    map_flags: Tcl_map_flags;
-    origin: Psize_t; //x3
-    region: Psize_t; //x3
-    image_row_pitch: Psize_t;
-    image_slice_pitch: Psize_t;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event;
-    errcode_ret: Pcl_int): Pointer;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueUnmapMemObject(command_queue: Pcl_command_queue;
-    memobj: Pcl_mem;
-    mapped_ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueMigrateMemObjects(command_queue: Pcl_command_queue;
-    num_mem_objects: Tcl_uint;
-  	mem_objects: Pcl_mem;
-    flags: Tcl_mem_flags;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int;  //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clEnqueueNDRangeKernel(command_queue: Pcl_command_queue;
-    kernel: Pcl_kernel;
-    work_dim: Tcl_uint;
-    global_work_offset: Psize_t;
-    global_work_size: Psize_t;
-    local_work_size: Psize_t;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int;  //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-type
-  Tcl_EnqueueNativeKernel = procedure();
-   stdcall;
-
-  function clEnqueueNativeKernel(command_queue: Pcl_command_queue;
-    user_func: Tcl_EnqueueNativeKernel;
-    args: Pointer;
-    cb_args: NativeUInt;
-    num_mem_objects: Tcl_uint;
-    mem_list: Pcl_mem;
-    args_mem_loc: PPointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueMarkerWithWaitList(command_queue: Pcl_command_queue;
-    num_events_in_wait_list: Tcl_uint;
-	event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-  function clEnqueueBarrierWithWaitList(command_queue: Pcl_command_queue;
-    num_events_in_wait_list: Tcl_uint;
-	event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-type
-  Tcl_EnqueueSVM_fn = procedure();
-   stdcall;
-
-  function clEnqueueSVMFree(command_queue: Pcl_command_queue;
-    num_svm_pointers: Tcl_uint;
-    args: Pointer;
-    pfn_free_func: Tcl_EnqueueSVM_fn;
-    user_data: Pointer;
-    mem_list: Pcl_mem;
-    args_mem_loc: PPointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_1_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueSVMMemcpy(command_queue: Pcl_command_queue;
-    num_svm_pointers: Tcl_uint;
-    args: Pointer;
-    user_data: Pointer;
-    mem_list: Pcl_mem;
-    args_mem_loc: PPointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueSVMMap(command_queue: Pcl_command_queue;
-    num_svm_pointers: Tcl_uint;
-    args: Pointer;
-    user_data: Pointer;
-    mem_list: Pcl_mem;
-    args_mem_loc: PPointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueSVMUnmap(command_queue: Pcl_command_queue;
-    svm_ptr: Pointer;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_2_0
-   stdcall; external LibOpenCL;
-
-  function clEnqueueSVMmigrateMem(command_queue: Pcl_command_queue;
-    num_svm_pointers: Tcl_uint;
-    svm_pointers: PPointer;
-    sizes: Psize_t;
-    flags: Tcl_mem_flags;  //cl_mem_migration_flags;
-    num_events_in_wait_list: Tcl_uint;
-    event_wait_list: Pcl_event;
-    event: Pcl_event): Tcl_int; //CL_API_SUFFIX__VERSION_2_1
-   stdcall; external LibOpenCL;
-
-  function clEnqueueWaitForEvents(command_queue: Pcl_command_queue;
-    num_events: Tcl_uint;
-    event_list: Pcl_event): Tcl_int;
-   stdcall; external LibOpenCL;
-
-  function clEnqueueBarrier(command_queue: Pcl_command_queue): Tcl_int;
-   stdcall; external LibOpenCL;
-
-  //* Extension function access
-  //*
-  //* Returns the extension function address for the given function name,
-  //* or NULL if a valid function can not be found.  The client must
-  //* check to make sure the address is not NULL, before using or
-  //* calling the returned function address.
-  //*
-
-  function clGetExtensionFunctionAddressForPlatform(_platform: Pcl_platform_id;
-    func_name: Pcl_char): Pointer;  //CL_API_SUFFIX__VERSION_1_2
-   stdcall; external LibOpenCL;
-
-
-   //* Deprecated OpenCL 1.1 APIs *//
-   // clCreateImage2D();
-   // clCreateImage3D();
-   // clEnqueueMarker();
-   // clEnqueueWaitForEvents();
-   // clEnqueueBarrier();
-   // clUnloadCompiler();
-   // clGetExtensionFunctionAddress();
-   
-   //* Deprecated OpenCL 2.0 APIs *//
-   
-   // clCreateCommandQueue();
-   // clCreateSampler();
-   // clEnqueueTask();
-//-------------------------------------------------------------------------
-
-function InitOpenCL: Boolean;
-procedure CloseOpenCL;
-function InitFromLibraryOpenCL(const CLName: WideString): Boolean;
-function IsInitializedOpenCL: Boolean;
-
-//---------------------------------------------------------------------
-implementation
-//---------------------------------------------------------------------
-
-const
-  INVALID_MODULEHANDLE = 0;
-
-// ************** Windows specific ********************
-{$IFDEF MSWINDOWS}
-var
-  CLHandle: HINST;
-{$ENDIF}
-
-// ************** UNIX specific ********************
-{$IFDEF UNIX}
-var
-  CLHandle: TLibHandle;
-{$ENDIF}
-
-//---------------------------------------------------
-
-function GetProcAddressOpenCL(ProcName: PAnsiChar): Pointer;
-begin
-  result := GetProcAddress(Cardinal(CLHandle), ProcName);
-end;
-
-function InitOpenCL: Boolean;
-begin
-  if CLHandle = INVALID_MODULEHANDLE then
-    Result := InitFromLibraryOpenCL(LibOpenCL)
-  else
-    Result := True;
-end;
-
-procedure CloseOpenCL;
-begin
-  if CLHandle <> INVALID_MODULEHANDLE then
-  begin
-    FreeLibrary(Cardinal(CLHandle));
-    CLHandle := INVALID_MODULEHANDLE;
-  end;
-end;
-
-function InitFromLibraryOpenCL(const CLName: WideString): Boolean;
-begin
-  Result := False;
-  CloseOpenCL;
-  CLHandle := LoadLibraryW(PWideChar(CLName));
-  if CLHandle = INVALID_MODULEHANDLE then
-    Exit;
-
-
-  Result := True;
-end;
-
-function IsInitializedOpenCL: Boolean;
-begin
-  Result := (CLHandle <> INVALID_MODULEHANDLE);
-end;
-
-end.
-

+ 0 - 332
Source/FMX/OpenCLx.Platform.pas

@@ -1,332 +0,0 @@
-//
-// The graphics platform GLXcene https://github.com/glscene
-//
-unit OpenCLx.Platform;
-
-(*
- * 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
-
-(*
- * 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.

+ 5 - 5
_cleanrelease.cmd

@@ -62,11 +62,11 @@ rem del *.cfg /s - there are quake's animations
 attrib -R "AdvDemos/Q3Demo/Model/animation.cfg"
 
 echo---------------------------------------------------------
-
-echo delete all .svn directories with subdirectories and files 
-for /r %1 %%R in (.svn) do if exist "%%R" (rd /s /q "%%R")
-echo delete all .git directories with subdirectories and files 
-for /r %1 %%R in (.git) do if exist "%%R" (rd /s /q "%%R")
+ 
+rem echo delete all .svn directories with subdirectories and files 
+rem for /r %1 %%R in (.svn) do if exist "%%R" (rd /s /q "%%R")
+rem echo delete all .git directories with subdirectories and files 
+rem for /r %1 %%R in (.git) do if exist "%%R" (rd /s /q "%%R")
 
 echo---------------------------------------------------------