CL_D3D10.pas 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. (*******************************************************************************
  2. * Copyright (c) 2008-2010 The Khronos Group Inc.
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and/or associated documentation files (the
  6. * "Materials"), to deal in the Materials without restriction, including
  7. * without limitation the rights to use, copy, modify, merge, publish,
  8. * distribute, sublicense, and/or sell copies of the Materials, and to
  9. * permit persons to whom the Materials are furnished to do so, subject to
  10. * the following conditions:
  11. *
  12. * The above copyright notice and this permission notice shall be included
  13. * in all copies or substantial portions of the Materials.
  14. *
  15. * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  18. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  19. * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  20. * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  21. * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
  22. ******************************************************************************)
  23. (************************************************)
  24. (* *)
  25. (* OpenCL1.2 and Delphi and Windows *)
  26. (* *)
  27. (* created by : Maksym Tymkovych *)
  28. (* (niello) *)
  29. (* *)
  30. (* headers versions: 0.07 *)
  31. (* file name : CL_d3d10.pas *)
  32. (* last modify : 10.12.11 *)
  33. (* license : BSD *)
  34. (* *)
  35. (* Site : www.niello.org.ua *)
  36. (* e-mail : [email protected] *)
  37. (* ICQ : 446-769-253 *)
  38. (* *)
  39. (* updated by : Alexander Kiselev *)
  40. (* (Igroman) *)
  41. (* Site : http://Igroman14.livejournal.com *)
  42. (* e-mail : [email protected] *)
  43. (* ICQ : 207-381-695 *)
  44. (* (c) 2010 *)
  45. (* *)
  46. (***********Copyright (c) niello 2008-2011*******)
  47. unit CL_D3D10;
  48. interface
  49. {$INCLUDE OpenCL.inc}
  50. uses
  51. OpenGL,
  52. CL,
  53. D3D10,
  54. CL_Platform;
  55. {$INCLUDE 'OpenCL.inc'}
  56. type
  57. UINT = Longword;
  58. (******************************************************************************
  59. * cl_khr_d3d10_sharing *)
  60. const
  61. cl_khr_d3d10_sharing = 1;
  62. type
  63. Pcl_d3d10_device_source_khr = ^Tcl_d3d10_device_source_khr;
  64. Tcl_d3d10_device_source_khr = TCL_uint;
  65. Pcl_d3d10_device_set_khr = ^Tcl_d3d10_device_set_khr;
  66. Tcl_d3d10_device_set_khr = TCL_uint;
  67. (******************************************************************************)
  68. const
  69. // Error Codes
  70. CL_INVALID_D3D10_DEVICE_KHR = -1002;
  71. CL_INVALID_D3D10_RESOURCE_KHR = -1003;
  72. CL_D3D10_RESOURCE_ALREADY_ACQUIRED_KHR = -1004;
  73. CL_D3D10_RESOURCE_NOT_ACQUIRED_KHR = -1005;
  74. // cl_d3d10_device_source_nv
  75. CL_D3D10_DEVICE_KHR = $4010;
  76. CL_D3D10_DXGI_ADAPTER_KHR = $4011;
  77. // cl_d3d10_device_set_nv
  78. CL_PREFERRED_DEVICES_FOR_D3D10_KHR = $4012;
  79. CL_ALL_DEVICES_FOR_D3D10_KHR = $4013;
  80. // cl_context_info
  81. CL_CONTEXT_D3D10_DEVICE_KHR = $4014;
  82. CL_CONTEXT_D3D10_PREFER_SHARED_RESOURCES_KHR = $402C;
  83. // cl_mem_info
  84. CL_MEM_D3D10_RESOURCE_KHR = $4015;
  85. // cl_image_info
  86. CL_IMAGE_D3D10_SUBRESOURCE_KHR = $4016;
  87. // cl_command_type
  88. CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR = $4017;
  89. CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR = $4018;
  90. (******************************************************************************)
  91. {$IFDEF CL_VERSION_1_0}
  92. type
  93. TclGetDeviceIDsFromD3D10KHR_fn = function(
  94. platform: Tcl_platform_id;
  95. d3d_device_source: Tcl_d3d10_device_source_khr;
  96. d3d_object: Pointer;
  97. d3d_device_set: Tcl_d3d10_device_set_khr;
  98. num_entries: Tcl_uint;
  99. devices: PPcl_device_id;
  100. num_devices: Pcl_uint
  101. ): Tcl_int;
  102. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  103. {$ENDIF}
  104. {$IFDEF CL_VERSION_1_0}
  105. type
  106. TclCreateFromD3D10BufferKHR_fn = function(
  107. context: Pcl_context;
  108. flags: Tcl_mem_flags;
  109. resource: PID3D10Buffer;
  110. errcode_ret: Pcl_int
  111. ): Tcl_int;
  112. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  113. {$ENDIF}
  114. {$IFDEF CL_VERSION_1_0}
  115. type
  116. TclCreateFromD3D10Texture2DKHR_fn = function(
  117. context: Pcl_context;
  118. flags: Tcl_mem_flags;
  119. resource: PID3D10Texture2D;
  120. subresource: UINT;
  121. errcode_ret: Pcl_int
  122. ): Tcl_int;
  123. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  124. {$ENDIF}
  125. {$IFDEF CL_VERSION_1_0}
  126. type
  127. TclCreateFromD3D10Texture3DKHR_fn = function(
  128. context: Pcl_context;
  129. flags: Tcl_mem_flags;
  130. resource: PID3D10Texture3D;
  131. subresource: UINT;
  132. errcode_ret: Pcl_int
  133. ): Tcl_int;
  134. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  135. {$ENDIF}
  136. {$IFDEF CL_VERSION_1_0}
  137. type
  138. TclEnqueueAcquireD3D10ObjectsKHR_fn = function(
  139. command_queue: Pcl_command_queue;
  140. num_objects: Tcl_uint;
  141. const mem_objects: PPcl_mem;
  142. num_events_in_wait_list: Tcl_uint;
  143. const event_wait_list: PPcl_event;
  144. event: PPcl_event
  145. ): Tcl_int;
  146. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  147. {$ENDIF}
  148. {$IFDEF CL_VERSION_1_0}
  149. type
  150. TclEnqueueReleaseD3D10ObjectsKHR_fn = function(
  151. command_queue: Pcl_command_queue;
  152. num_objects: Tcl_uint;
  153. mem_objects: PPcl_mem;
  154. num_events_in_wait_list: Tcl_uint;
  155. const event_wait_list: PPcl_event;
  156. event: PPcl_event
  157. ): Tcl_int;{$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  158. {$ENDIF}
  159. const
  160. CL_D3D10_DEVICE = $1070;
  161. {$IFDEF CL_VERSION_1_0}
  162. type
  163. TclCreateFromD3D10Buffer = function (
  164. context: Pcl_context; (* context *)
  165. flags: Tcl_mem_flags; (* flags *)
  166. pD3DResource: PID3D10Resource; (* pD3DResource *) //ID3D10Resource *
  167. errcode_ret: PInteger (* errcode_ret *)
  168. ) : Tcl_mem;
  169. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  170. {$ENDIF}
  171. {$IFDEF CL_VERSION_1_0}
  172. TclCreateImageFromD3D10Resource = function (context: Pcl_context; (* context *)
  173. flags: Tcl_mem_flags; (* flags *)
  174. pD3DResource: PID3D10Resource; (* pD3DResource *) //ID3D10Resource *
  175. errcode_ret: PInteger (* errcode_ret *)
  176. ) : Tcl_mem;
  177. {$IFDEF CDECL}cdecl{$ELSE}stdcall{$ENDIF};
  178. {$ENDIF}
  179. {$IFDEF CL_VERSION_1_0}
  180. var
  181. clGetDeviceIDsFromD3D10KHR_fn: TclGetDeviceIDsFromD3D10KHR_fn;
  182. clCreateFromD3D10BufferKHR_fn: TclCreateFromD3D10BufferKHR_fn;
  183. clCreateFromD3D10Texture2DKHR_fn: TclCreateFromD3D10Texture2DKHR_fn;
  184. clCreateFromD3D10Texture3DKHR_fn: TclCreateFromD3D10Texture3DKHR_fn;
  185. clEnqueueAcquireD3D10ObjectsKHR_fn: TclEnqueueAcquireD3D10ObjectsKHR_fn;
  186. clEnqueueReleaseD3D10ObjectsKHR_fn: TclEnqueueReleaseD3D10ObjectsKHR_fn;
  187. clCreateFromD3D10Buffer: TclCreateFromD3D10Buffer;
  188. clCreateImageFromD3D10Resource: TclCreateImageFromD3D10Resource;
  189. {$ENDIF}
  190. function InitCL_D3D10: Boolean;
  191. implementation
  192. function InitCL_D3D10: Boolean;
  193. begin
  194. Result := False;
  195. if OCL_LibHandle <> nil then begin
  196. {$IFDEF CL_VERSION_1_0}
  197. clGetDeviceIDsFromD3D10KHR_fn := TclGetDeviceIDsFromD3D10KHR_fn(oclGetProcAddress('clGetDeviceIDsFromD3D10KHR_fn', OCL_LibHandle));
  198. clCreateFromD3D10BufferKHR_fn := TclCreateFromD3D10BufferKHR_fn(oclGetProcAddress('clCreateFromD3D10BufferKHR_fn', OCL_LibHandle));
  199. clCreateFromD3D10Texture2DKHR_fn := TclCreateFromD3D10Texture2DKHR_fn(oclGetProcAddress('clCreateFromD3D10Texture2DKHR_fn', OCL_LibHandle));
  200. clCreateFromD3D10Texture3DKHR_fn := TclCreateFromD3D10Texture3DKHR_fn(oclGetProcAddress('clCreateFromD3D10Texture3DKHR_fn', OCL_LibHandle));
  201. clEnqueueAcquireD3D10ObjectsKHR_fn := TclEnqueueAcquireD3D10ObjectsKHR_fn(oclGetProcAddress('clEnqueueAcquireD3D10ObjectsKHR_fn', OCL_LibHandle));
  202. clEnqueueReleaseD3D10ObjectsKHR_fn := TclEnqueueReleaseD3D10ObjectsKHR_fn(oclGetProcAddress('clEnqueueReleaseD3D10ObjectsKHR_fn', OCL_LibHandle));
  203. clCreateFromD3D10Buffer := TclCreateFromD3D10Buffer(oclGetProcAddress('clCreateFromD3D10Buffer', OCL_LibHandle));
  204. clCreateImageFromD3D10Resource := TclCreateImageFromD3D10Resource(oclGetProcAddress('clCreateImageFromD3D10Resource', OCL_LibHandle));
  205. {$ENDIF}
  206. Result := True;
  207. end;
  208. end;
  209. end.