diff --git a/DataScraping/Reps/OpenCL-Docs b/DataScraping/Reps/OpenCL-Docs index a4b82876..d83dfebc 160000 --- a/DataScraping/Reps/OpenCL-Docs +++ b/DataScraping/Reps/OpenCL-Docs @@ -1 +1 @@ -Subproject commit a4b828760dbfeeea737530a045f90444aa93e069 +Subproject commit d83dfebcc322ccff53b6f09a7db833a90b784bd7 diff --git a/DataScraping/XML/OpenCL/funcs.bin b/DataScraping/XML/OpenCL/funcs.bin index 057f95af..f7ac213f 100644 Binary files a/DataScraping/XML/OpenCL/funcs.bin and b/DataScraping/XML/OpenCL/funcs.bin differ diff --git a/LastPack.log b/LastPack.log index 38141682..2019e3db 100644 --- a/LastPack.log +++ b/LastPack.log @@ -7,32 +7,30 @@ Compiling "DataScraping/Reps/PullReps.pas" Compiling: OK Runing SubReps Update SubReps Update: Pulling OpenCL -SubReps Update: cmd /c "(echo [checkout] && git checkout custom 2>&1) && (echo [pull] && git pull 0_official main & echo [pull-own]: && git pull SunSerega custom)" +SubReps Update: cmd /c "(echo [checkout] && git checkout custom 2>&1) && (echo [pull-own]: && git pull SunSerega custom) && (echo [fetch-main] && git fetch 0_official main:main) && (echo [merge-main] && git merge main)" SubReps Update: OpenCL[OUT] : [checkout] SubReps Update: OpenCL[OUT] : Your branch is up to date with 'SunSerega/custom'. SubReps Update: OpenCL[OUT] : Already on 'custom' -SubReps Update: OpenCL[OUT] : [pull] -SubReps Update: OpenCL[ERR] : From KhronosGroup/OpenCL-Docs -SubReps Update: OpenCL[ERR] : * branch main -> FETCH_HEAD -SubReps Update: OpenCL[OUT] : Already up to date. SubReps Update: OpenCL[OUT] : [pull-own]: SubReps Update: OpenCL[ERR] : From SunSerega/OpenCL-Docs SubReps Update: OpenCL[ERR] : * branch custom -> FETCH_HEAD SubReps Update: OpenCL[OUT] : Already up to date. +SubReps Update: OpenCL[OUT] : [fetch-main] +SubReps Update: OpenCL[OUT] : [merge-main] +SubReps Update: OpenCL[OUT] : Already up to date. SubReps Update: Done pulling OpenCL SubReps Update: Pulling OpenGL -SubReps Update: cmd /c "(echo [checkout] && git checkout custom 2>&1) && (echo [pull] && git pull 0_official main & echo [pull-own]: && git pull SunSerega custom)" +SubReps Update: cmd /c "(echo [checkout] && git checkout custom 2>&1) && (echo [pull-own]: && git pull SunSerega custom) && (echo [fetch-main] && git fetch 0_official main:main) && (echo [merge-main] && git merge main)" SubReps Update: OpenGL[OUT] : [checkout] SubReps Update: OpenGL[OUT] : Your branch is up to date with 'SunSerega/custom'. SubReps Update: OpenGL[OUT] : Already on 'custom' -SubReps Update: OpenGL[OUT] : [pull] -SubReps Update: OpenGL[ERR] : From KhronosGroup/OpenGL-Registry -SubReps Update: OpenGL[ERR] : * branch main -> FETCH_HEAD -SubReps Update: OpenGL[OUT] : Already up to date. SubReps Update: OpenGL[OUT] : [pull-own]: SubReps Update: OpenGL[ERR] : From SunSerega/OpenGL-Registry SubReps Update: OpenGL[ERR] : * branch custom -> FETCH_HEAD SubReps Update: OpenGL[OUT] : Already up to date. +SubReps Update: OpenGL[OUT] : [fetch-main] +SubReps Update: OpenGL[OUT] : [merge-main] +SubReps Update: OpenGL[OUT] : Already up to date. SubReps Update: Done pulling OpenGL Finished runing SubReps Update ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Scrap XML ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -56,15 +54,15 @@ ScrapXML[OpenCL]: Parsing "cl" ScrapXML[OpenCL]: Constructing named items ScrapXML[OpenCL]: Saving as binary ScrapXML[OpenCL]: VendorSuffix: Saved 11 items -ScrapXML[OpenCL]: Enum: Saved 1129 items +ScrapXML[OpenCL]: Enum: Saved 1133 items ScrapXML[OpenCL]: BasicType: Saved 30 items -ScrapXML[OpenCL]: Group: Saved 120 items +ScrapXML[OpenCL]: Group: Saved 121 items ScrapXML[OpenCL]: IdClass: Saved 18 items ScrapXML[OpenCL]: Struct: Saved 16 items ScrapXML[OpenCL]: Delegate: Saved 8 items ScrapXML[OpenCL]: Func: Saved 241 items ScrapXML[OpenCL]: Feature: Saved 7 items -ScrapXML[OpenCL]: Extension: Saved 130 items +ScrapXML[OpenCL]: Extension: Saved 134 items ScrapXML[OpenCL]: Done Finished runing ScrapXML[OpenCL] Compiling "DataScraping/XML/OpenGL/ScrapXML.pas" @@ -249,13 +247,13 @@ Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Dumping Id Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Dumping Struct items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Dumping Delegate items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: PascalBasicType: Packed 12 items -Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Group: Packed 112 items +Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Group: Packed 113 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: IdClass: Packed 28 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Struct: Packed 17 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Delegate: Packed 7 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Func: Packed 241 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Feature: Packed 1 items -Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Extension: Packed 130 items +Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Extension: Packed 134 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Cleanup Template[OpenCL]: Finished runing TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe] Finished runing Template[OpenCL] diff --git a/Log/OpenCL.log b/Log/OpenCL.log index 394b2d7d..f2e06785 100644 --- a/Log/OpenCL.log +++ b/Log/OpenCL.log @@ -103,13 +103,13 @@ Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Dumping Id Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Dumping Struct items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Dumping Delegate items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: PascalBasicType: Packed 12 items -Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Group: Packed 112 items +Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Group: Packed 113 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: IdClass: Packed 28 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Struct: Packed 17 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Delegate: Packed 7 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Func: Packed 241 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Feature: Packed 1 items -Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Extension: Packed 130 items +Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Extension: Packed 134 items Template[OpenCL]: TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe]: Cleanup Template[OpenCL]: Finished runing TemplateCommand[LowLvl/OpenCL/Pack Essentials.exe] Finished runing Template[OpenCL] diff --git a/Log/PullUpstream.log b/Log/PullUpstream.log index 38f178b9..cd7dfaf3 100644 --- a/Log/PullUpstream.log +++ b/Log/PullUpstream.log @@ -44,15 +44,15 @@ ScrapXML[OpenCL]: Parsing "cl" ScrapXML[OpenCL]: Constructing named items ScrapXML[OpenCL]: Saving as binary ScrapXML[OpenCL]: VendorSuffix: Saved 11 items -ScrapXML[OpenCL]: Enum: Saved 1129 items +ScrapXML[OpenCL]: Enum: Saved 1133 items ScrapXML[OpenCL]: BasicType: Saved 30 items -ScrapXML[OpenCL]: Group: Saved 120 items +ScrapXML[OpenCL]: Group: Saved 121 items ScrapXML[OpenCL]: IdClass: Saved 18 items ScrapXML[OpenCL]: Struct: Saved 16 items ScrapXML[OpenCL]: Delegate: Saved 8 items ScrapXML[OpenCL]: Func: Saved 241 items ScrapXML[OpenCL]: Feature: Saved 7 items -ScrapXML[OpenCL]: Extension: Saved 130 items +ScrapXML[OpenCL]: Extension: Saved 134 items ScrapXML[OpenCL]: Done Finished runing ScrapXML[OpenCL] Runing ScrapXML[OpenGL] diff --git a/Modules.Packed/OpenCL.pas b/Modules.Packed/OpenCL.pas index a3bd928a..11ee513c 100644 --- a/Modules.Packed/OpenCL.pas +++ b/Modules.Packed/OpenCL.pas @@ -1813,6 +1813,7 @@ clDeviceInfo = record public static property DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES: clDeviceInfo read new clDeviceInfo($1073); public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT: clDeviceInfo read new clDeviceInfo($1074); public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED: clDeviceInfo read new clDeviceInfo($1075); + public static property DEVICE_KERNEL_CLOCK_CAPABILITIES: clDeviceInfo read new clDeviceInfo($1076); public static property DEVICE_COMMAND_BUFFER_CAPABILITIES: clDeviceInfo read new clDeviceInfo($12A9); public static property DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES: clDeviceInfo read new clDeviceInfo($12AA); public static property DEVICE_COMMAND_BUFFER_NUM_SYNC_DEVICES: clDeviceInfo read new clDeviceInfo($12AB); @@ -2135,6 +2136,8 @@ clDeviceInfo = record Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT' else if DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED = self then Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED' else + if DEVICE_KERNEL_CLOCK_CAPABILITIES = self then + Result := 'DEVICE_KERNEL_CLOCK_CAPABILITIES' else if DEVICE_COMMAND_BUFFER_CAPABILITIES = self then Result := 'DEVICE_COMMAND_BUFFER_CAPABILITIES' else if DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES = self then @@ -2355,6 +2358,61 @@ clDeviceIntegerDotProductCapabilities = record end; + /// + clDeviceKernelClockCapabilities = record + public val: UInt64; + public constructor(val: UInt64) := self.val := val; + + public static property DEVICE_KERNEL_CLOCK_SCOPE_DEVICE: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 0); + public static property DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 1); + public static property DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 2); + + public static function operator+(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val or v2.val); + public static function operator or(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val or v2.val); + + public static function operator-(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val and not v2.val); + + public static procedure operator+=(var v1: clDeviceKernelClockCapabilities; v2: clDeviceKernelClockCapabilities) := v1 := v1+v2; + public static procedure operator-=(var v1: clDeviceKernelClockCapabilities; v2: clDeviceKernelClockCapabilities) := v1 := v1-v2; + + public static function operator in(v1, v2: clDeviceKernelClockCapabilities) := v1.val and v2.val = v1.val; + + public function ToString: string; override; + begin + var res := new StringBuilder; + var left_val := self.val; + if left_val=0 then + begin + Result := 'clDeviceKernelClockCapabilities[0]'; + exit; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_DEVICE in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_DEVICE+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_DEVICE.val; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP.val; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP.val; + end; + if left_val<>0 then + begin + res += 'clDeviceKernelClockCapabilities['; + res += self.val.ToString; + res += ']+'; + end; + res.Length -= 1; + Result := res.ToString; + end; + + end; + /// clDeviceLocalMemType = record public val: UInt32; @@ -10966,6 +11024,14 @@ cl_queue_family_properties = record if param_value_validate_size and (param_value_ret_size<>param_value_sz) then raise new InvalidOperationException($'Implementation returned a size of {param_value_ret_size} instead of {param_value_sz}'); end; + public [MethodImpl(MethodImplOptions.AggressiveInlining)] static function GetDeviceInfo_DEVICE_KERNEL_CLOCK_CAPABILITIES(device: cl_device_id; var param_value: clDeviceKernelClockCapabilities; param_value_validate_size: boolean := false): clErrorCode; + begin + var param_value_sz := new UIntPtr(Marshal.SizeOf&); + var param_value_ret_size: UIntPtr; + Result := GetDeviceInfo(device, clDeviceInfo.DEVICE_KERNEL_CLOCK_CAPABILITIES, param_value_sz,param_value,param_value_ret_size); + if param_value_validate_size and (param_value_ret_size<>param_value_sz) then + raise new InvalidOperationException($'Implementation returned a size of {param_value_ret_size} instead of {param_value_sz}'); + end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] static function GetDeviceInfo_DEVICE_COMMAND_BUFFER_CAPABILITIES(device: cl_device_id; var param_value: clDeviceCommandBufferCapabilities; param_value_validate_size: boolean := false): clErrorCode; begin var param_value_sz := new UIntPtr(Marshal.SizeOf&); @@ -19574,6 +19640,12 @@ cl_queue_family_properties = record public const ExtensionString = 'cl_khr_integer_dot_product'; end; + /// id: cl_khr_kernel_clock + /// version: provisional + clKernelClockKHR = static class + public const ExtensionString = 'cl_khr_kernel_clock'; + end; + /// id: cl_khr_local_int32_base_atomics /// promoted to: cl 1.1 clLocalInt32BaseAtomicsKHR = static class @@ -19620,6 +19692,21 @@ cl_queue_family_properties = record public const ExtensionString = 'cl_khr_spir'; end; + /// id: cl_khr_spirv_extended_debug_info + clSpirvExtendedDebugInfoKHR = static class + public const ExtensionString = 'cl_khr_spirv_extended_debug_info'; + end; + + /// id: cl_khr_spirv_linkonce_odr + clSpirvLinkonceOdrKHR = static class + public const ExtensionString = 'cl_khr_spirv_linkonce_odr'; + end; + + /// id: cl_khr_spirv_no_integer_wrap_decoration + clSpirvNoIntegerWrapDecorationKHR = static class + public const ExtensionString = 'cl_khr_spirv_no_integer_wrap_decoration'; + end; + /// id: cl_khr_srgb_image_writes clSrgbImageWritesKHR = static class public const ExtensionString = 'cl_khr_srgb_image_writes'; diff --git a/Modules.Packed/OpenCLABC.pas b/Modules.Packed/OpenCLABC.pas index e8b9b451..aed2c3d8 100644 --- a/Modules.Packed/OpenCLABC.pas +++ b/Modules.Packed/OpenCLABC.pas @@ -2413,6 +2413,10 @@ CLDeviceProperties = class begin cl.GetDeviceInfo_DEVICE_MEMORY_CAPABILITIES(self.ntv, Result).RaiseIfError; end; + private function GetKernelClockCapabilities: clDeviceKernelClockCapabilities; + begin + cl.GetDeviceInfo_DEVICE_KERNEL_CLOCK_CAPABILITIES(self.ntv, Result).RaiseIfError; + end; public property &Type: clDeviceType read GetType; public property VendorId: clKhronosVendorId read GetVendorId; @@ -2592,6 +2596,7 @@ CLDeviceProperties = class public property NumThreadsPerEu: UInt32 read GetNumThreadsPerEu; public property FeatureCapabilities: clDeviceFeatureCapabilities read GetFeatureCapabilities; public property MemoryCapabilities: clMemAllocFlagsIMG read GetMemoryCapabilities; + public property KernelClockCapabilities: clDeviceKernelClockCapabilities read GetKernelClockCapabilities; private static procedure AddProp(res: StringBuilder; get_prop: ()->T) := try @@ -2779,7 +2784,8 @@ CLDeviceProperties = class res += 'NumEusPerSubSlice = '; AddProp(res, GetNumEusPerSubSlice ); res += #10; res += 'NumThreadsPerEu = '; AddProp(res, GetNumThreadsPerEu ); res += #10; res += 'FeatureCapabilities = '; AddProp(res, GetFeatureCapabilities ); res += #10; - res += 'MemoryCapabilities = '; AddProp(res, GetMemoryCapabilities ); + res += 'MemoryCapabilities = '; AddProp(res, GetMemoryCapabilities ); res += #10; + res += 'KernelClockCapabilities = '; AddProp(res, GetKernelClockCapabilities ); end; public function ToString: string; override; begin diff --git a/Packing/Descriptions/OpenCL.predoc b/Packing/Descriptions/OpenCL.predoc index dff7afe4..f3feda9a 100644 --- a/Packing/Descriptions/OpenCL.predoc +++ b/Packing/Descriptions/OpenCL.predoc @@ -1805,6 +1805,7 @@ type public static property DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES: clDeviceInfo read new clDeviceInfo($1073); public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT: clDeviceInfo read new clDeviceInfo($1074); public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED: clDeviceInfo read new clDeviceInfo($1075); + public static property DEVICE_KERNEL_CLOCK_CAPABILITIES: clDeviceInfo read new clDeviceInfo($1076); public static property DEVICE_COMMAND_BUFFER_CAPABILITIES: clDeviceInfo read new clDeviceInfo($12A9); public static property DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES: clDeviceInfo read new clDeviceInfo($12AA); public static property DEVICE_COMMAND_BUFFER_NUM_SYNC_DEVICES: clDeviceInfo read new clDeviceInfo($12AB); @@ -2127,6 +2128,8 @@ type Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT' else if DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED = self then Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED' else + if DEVICE_KERNEL_CLOCK_CAPABILITIES = self then + Result := 'DEVICE_KERNEL_CLOCK_CAPABILITIES' else if DEVICE_COMMAND_BUFFER_CAPABILITIES = self then Result := 'DEVICE_COMMAND_BUFFER_CAPABILITIES' else if DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES = self then @@ -2347,6 +2350,61 @@ type end; + /// + clDeviceKernelClockCapabilities = record + public val: UInt64; + public constructor(val: UInt64) := self.val := val; + + public static property DEVICE_KERNEL_CLOCK_SCOPE_DEVICE: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 0); + public static property DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 1); + public static property DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 2); + + public static function operator+(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val or v2.val); + public static function operator or(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val or v2.val); + + public static function operator-(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val and not v2.val); + + public static procedure operator+=(var v1: clDeviceKernelClockCapabilities; v2: clDeviceKernelClockCapabilities) := v1 := v1+v2; + public static procedure operator-=(var v1: clDeviceKernelClockCapabilities; v2: clDeviceKernelClockCapabilities) := v1 := v1-v2; + + public static function operator in(v1, v2: clDeviceKernelClockCapabilities) := v1.val and v2.val = v1.val; + + public function ToString: string; override; + begin + var res := new StringBuilder; + var left_val := self.val; + if left_val=0 then + begin + Result := 'clDeviceKernelClockCapabilities[0]'; + exit; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_DEVICE in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_DEVICE+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_DEVICE.val; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP.val; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP.val; + end; + if left_val<>0 then + begin + res += 'clDeviceKernelClockCapabilities['; + res += self.val.ToString; + res += ']+'; + end; + res.Length -= 1; + Result := res.ToString; + end; + + end; + /// clDeviceLocalMemType = record public val: UInt32; @@ -10954,6 +11012,14 @@ type if param_value_validate_size and (param_value_ret_size<>param_value_sz) then raise new InvalidOperationException($'Implementation returned a size of {param_value_ret_size} instead of {param_value_sz}'); end; + public [MethodImpl(MethodImplOptions.AggressiveInlining)] static function GetDeviceInfo_DEVICE_KERNEL_CLOCK_CAPABILITIES(device: cl_device_id; var param_value: clDeviceKernelClockCapabilities; param_value_validate_size: boolean := false): clErrorCode; + begin + var param_value_sz := new UIntPtr(Marshal.SizeOf&); + var param_value_ret_size: UIntPtr; + Result := GetDeviceInfo(device, clDeviceInfo.DEVICE_KERNEL_CLOCK_CAPABILITIES, param_value_sz,param_value,param_value_ret_size); + if param_value_validate_size and (param_value_ret_size<>param_value_sz) then + raise new InvalidOperationException($'Implementation returned a size of {param_value_ret_size} instead of {param_value_sz}'); + end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] static function GetDeviceInfo_DEVICE_COMMAND_BUFFER_CAPABILITIES(device: cl_device_id; var param_value: clDeviceCommandBufferCapabilities; param_value_validate_size: boolean := false): clErrorCode; begin var param_value_sz := new UIntPtr(Marshal.SizeOf&); @@ -19562,6 +19628,12 @@ type public const ExtensionString = 'cl_khr_integer_dot_product'; end; + /// id: cl_khr_kernel_clock + /// version: provisional + clKernelClockKHR = static class + public const ExtensionString = 'cl_khr_kernel_clock'; + end; + /// id: cl_khr_local_int32_base_atomics /// promoted to: cl 1.1 clLocalInt32BaseAtomicsKHR = static class @@ -19608,6 +19680,21 @@ type public const ExtensionString = 'cl_khr_spir'; end; + /// id: cl_khr_spirv_extended_debug_info + clSpirvExtendedDebugInfoKHR = static class + public const ExtensionString = 'cl_khr_spirv_extended_debug_info'; + end; + + /// id: cl_khr_spirv_linkonce_odr + clSpirvLinkonceOdrKHR = static class + public const ExtensionString = 'cl_khr_spirv_linkonce_odr'; + end; + + /// id: cl_khr_spirv_no_integer_wrap_decoration + clSpirvNoIntegerWrapDecorationKHR = static class + public const ExtensionString = 'cl_khr_spirv_no_integer_wrap_decoration'; + end; + /// id: cl_khr_srgb_image_writes clSrgbImageWritesKHR = static class public const ExtensionString = 'cl_khr_srgb_image_writes'; diff --git a/Packing/Descriptions/OpenCLABC.predoc b/Packing/Descriptions/OpenCLABC.predoc index f12ab4bc..3a583ee8 100644 --- a/Packing/Descriptions/OpenCLABC.predoc +++ b/Packing/Descriptions/OpenCLABC.predoc @@ -2302,6 +2302,10 @@ type begin cl.GetDeviceInfo_DEVICE_MEMORY_CAPABILITIES(self.ntv, Result).RaiseIfError; end; + private function GetKernelClockCapabilities: clDeviceKernelClockCapabilities; + begin + cl.GetDeviceInfo_DEVICE_KERNEL_CLOCK_CAPABILITIES(self.ntv, Result).RaiseIfError; + end; public property &Type: clDeviceType read GetType; public property VendorId: clKhronosVendorId read GetVendorId; @@ -2481,6 +2485,7 @@ type public property NumThreadsPerEu: UInt32 read GetNumThreadsPerEu; public property FeatureCapabilities: clDeviceFeatureCapabilities read GetFeatureCapabilities; public property MemoryCapabilities: clMemAllocFlagsIMG read GetMemoryCapabilities; + public property KernelClockCapabilities: clDeviceKernelClockCapabilities read GetKernelClockCapabilities; private static procedure AddProp(res: StringBuilder; get_prop: ()->T) := try @@ -2668,7 +2673,8 @@ type res += 'NumEusPerSubSlice = '; AddProp(res, GetNumEusPerSubSlice ); res += #10; res += 'NumThreadsPerEu = '; AddProp(res, GetNumThreadsPerEu ); res += #10; res += 'FeatureCapabilities = '; AddProp(res, GetFeatureCapabilities ); res += #10; - res += 'MemoryCapabilities = '; AddProp(res, GetMemoryCapabilities ); + res += 'MemoryCapabilities = '; AddProp(res, GetMemoryCapabilities ); res += #10; + res += 'KernelClockCapabilities = '; AddProp(res, GetKernelClockCapabilities ); end; public function ToString: string; override; begin diff --git a/Packing/Template/HighLvl/OpenCLABC/!Def/WrapperProperties/02#CLDevice.dat b/Packing/Template/HighLvl/OpenCLABC/!Def/WrapperProperties/02#CLDevice.dat index 005d42c7..e4291915 100644 --- a/Packing/Template/HighLvl/OpenCLABC/!Def/WrapperProperties/02#CLDevice.dat +++ b/Packing/Template/HighLvl/OpenCLABC/!Def/WrapperProperties/02#CLDevice.dat @@ -182,6 +182,7 @@ cl.GetDeviceInfo # NUM_THREADS_PER_EU # FEATURE_CAPABILITIES # MEMORY_CAPABILITIES +# KERNEL_CLOCK_CAPABILITIES Flat diff --git a/Packing/Template/HighLvl/OpenCLABC/WrapperProperties.template b/Packing/Template/HighLvl/OpenCLABC/WrapperProperties.template index 11a874c3..8d7fde36 100644 --- a/Packing/Template/HighLvl/OpenCLABC/WrapperProperties.template +++ b/Packing/Template/HighLvl/OpenCLABC/WrapperProperties.template @@ -838,6 +838,10 @@ begin cl.GetDeviceInfo_DEVICE_MEMORY_CAPABILITIES(self.ntv, Result).RaiseIfError; end; + private function GetKernelClockCapabilities: clDeviceKernelClockCapabilities; + begin + cl.GetDeviceInfo_DEVICE_KERNEL_CLOCK_CAPABILITIES(self.ntv, Result).RaiseIfError; + end; public property &Type: clDeviceType read GetType; public property VendorId: clKhronosVendorId read GetVendorId; @@ -1017,6 +1021,7 @@ public property NumThreadsPerEu: UInt32 read GetNumThreadsPerEu; public property FeatureCapabilities: clDeviceFeatureCapabilities read GetFeatureCapabilities; public property MemoryCapabilities: clMemAllocFlagsIMG read GetMemoryCapabilities; + public property KernelClockCapabilities: clDeviceKernelClockCapabilities read GetKernelClockCapabilities; private static procedure AddProp(res: StringBuilder; get_prop: ()->T) := try @@ -1204,7 +1209,8 @@ res += 'NumEusPerSubSlice = '; AddProp(res, GetNumEusPerSubSlice ); res += #10; res += 'NumThreadsPerEu = '; AddProp(res, GetNumThreadsPerEu ); res += #10; res += 'FeatureCapabilities = '; AddProp(res, GetFeatureCapabilities ); res += #10; - res += 'MemoryCapabilities = '; AddProp(res, GetMemoryCapabilities ); + res += 'MemoryCapabilities = '; AddProp(res, GetMemoryCapabilities ); res += #10; + res += 'KernelClockCapabilities = '; AddProp(res, GetKernelClockCapabilities ); end; public function ToString: string; override; begin diff --git a/Packing/Template/LowLvl/OpenCL/Extension.Interface.template b/Packing/Template/LowLvl/OpenCL/Extension.Interface.template index 3033605d..d9b36834 100644 --- a/Packing/Template/LowLvl/OpenCL/Extension.Interface.template +++ b/Packing/Template/LowLvl/OpenCL/Extension.Interface.template @@ -5945,6 +5945,12 @@ public const ExtensionString = 'cl_khr_integer_dot_product'; end; + /// id: cl_khr_kernel_clock + /// version: provisional + clKernelClockKHR = static class + public const ExtensionString = 'cl_khr_kernel_clock'; + end; + /// id: cl_khr_local_int32_base_atomics /// promoted to: cl 1.1 clLocalInt32BaseAtomicsKHR = static class @@ -5991,6 +5997,21 @@ public const ExtensionString = 'cl_khr_spir'; end; + /// id: cl_khr_spirv_extended_debug_info + clSpirvExtendedDebugInfoKHR = static class + public const ExtensionString = 'cl_khr_spirv_extended_debug_info'; + end; + + /// id: cl_khr_spirv_linkonce_odr + clSpirvLinkonceOdrKHR = static class + public const ExtensionString = 'cl_khr_spirv_linkonce_odr'; + end; + + /// id: cl_khr_spirv_no_integer_wrap_decoration + clSpirvNoIntegerWrapDecorationKHR = static class + public const ExtensionString = 'cl_khr_spirv_no_integer_wrap_decoration'; + end; + /// id: cl_khr_srgb_image_writes clSrgbImageWritesKHR = static class public const ExtensionString = 'cl_khr_srgb_image_writes'; diff --git a/Packing/Template/LowLvl/OpenCL/Feature.Interface.template b/Packing/Template/LowLvl/OpenCL/Feature.Interface.template index 1f993b40..6f354748 100644 --- a/Packing/Template/LowLvl/OpenCL/Feature.Interface.template +++ b/Packing/Template/LowLvl/OpenCL/Feature.Interface.template @@ -4620,6 +4620,14 @@ if param_value_validate_size and (param_value_ret_size<>param_value_sz) then raise new InvalidOperationException($'Implementation returned a size of {param_value_ret_size} instead of {param_value_sz}'); end; + public [MethodImpl(MethodImplOptions.AggressiveInlining)] static function GetDeviceInfo_DEVICE_KERNEL_CLOCK_CAPABILITIES(device: cl_device_id; var param_value: clDeviceKernelClockCapabilities; param_value_validate_size: boolean := false): clErrorCode; + begin + var param_value_sz := new UIntPtr(Marshal.SizeOf&); + var param_value_ret_size: UIntPtr; + Result := GetDeviceInfo(device, clDeviceInfo.DEVICE_KERNEL_CLOCK_CAPABILITIES, param_value_sz,param_value,param_value_ret_size); + if param_value_validate_size and (param_value_ret_size<>param_value_sz) then + raise new InvalidOperationException($'Implementation returned a size of {param_value_ret_size} instead of {param_value_sz}'); + end; public [MethodImpl(MethodImplOptions.AggressiveInlining)] static function GetDeviceInfo_DEVICE_COMMAND_BUFFER_CAPABILITIES(device: cl_device_id; var param_value: clDeviceCommandBufferCapabilities; param_value_validate_size: boolean := false): clErrorCode; begin var param_value_sz := new UIntPtr(Marshal.SizeOf&); diff --git a/Packing/Template/LowLvl/OpenCL/Log/All EnumToTypeBinding's.log b/Packing/Template/LowLvl/OpenCL/Log/All EnumToTypeBinding's.log index 07d6b97c..5b7fde37 100644 --- a/Packing/Template/LowLvl/OpenCL/Log/All EnumToTypeBinding's.log +++ b/Packing/Template/LowLvl/OpenCL/Log/All EnumToTypeBinding's.log @@ -426,6 +426,9 @@ cl_device_integer_dot_product_acceleration_properties --- DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED !output cl_device_integer_dot_product_acceleration_properties +--- DEVICE_KERNEL_CLOCK_CAPABILITIES +!output +clDeviceKernelClockCapabilities --- DEVICE_COMMAND_BUFFER_CAPABILITIES !output clDeviceCommandBufferCapabilities diff --git a/Packing/Template/LowLvl/OpenCL/Log/All Extension's.log b/Packing/Template/LowLvl/OpenCL/Log/All Extension's.log index 5c6a9bb8..54777def 100644 --- a/Packing/Template/LowLvl/OpenCL/Log/All Extension's.log +++ b/Packing/Template/LowLvl/OpenCL/Log/All Extension's.log @@ -938,6 +938,12 @@ Enum [cl::DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT] Enum [cl::DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED] +# clKernelClockKHR (cl_khr_kernel_clock) + Enum [cl::DEVICE_KERNEL_CLOCK_SCOPE_DEVICE] + Enum [cl::DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP] + Enum [cl::DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP] + Enum [cl::DEVICE_KERNEL_CLOCK_CAPABILITIES] + # clLocalInt32BaseAtomicsKHR (cl_khr_local_int32_base_atomics) # clLocalInt32ExtendedAtomicsKHR (cl_khr_local_int32_extended_atomics) @@ -985,6 +991,12 @@ Enum [cl::DEVICE_SPIR_VERSIONS] Enum [cl::PROGRAM_BINARY_TYPE_INTERMEDIATE] +# clSpirvExtendedDebugInfoKHR (cl_khr_spirv_extended_debug_info) + +# clSpirvLinkonceOdrKHR (cl_khr_spirv_linkonce_odr) + +# clSpirvNoIntegerWrapDecorationKHR (cl_khr_spirv_no_integer_wrap_decoration) + # clSrgbImageWritesKHR (cl_khr_srgb_image_writes) # clSubgroupBallotKHR (cl_khr_subgroup_ballot) diff --git a/Packing/Template/LowLvl/OpenCL/Log/All Func's.log b/Packing/Template/LowLvl/OpenCL/Log/All Func's.log index fada486b..991dc6ea 100644 --- a/Packing/Template/LowLvl/OpenCL/Log/All Func's.log +++ b/Packing/Template/LowLvl/OpenCL/Log/All Func's.log @@ -1551,7 +1551,7 @@ param_value_size: UIntPtr param_value: pointer param_value_size_ret: var UIntPtr / IntPtr !ffo -205 +206 clErrorCode | cl_device_id | clDeviceInfo | UIntPtr | var T | var UIntPtr | clErrorCode | cl_device_id | clDeviceInfo | UIntPtr | var T | IntPtr | clErrorCode | cl_device_id | clDeviceInfo | UIntPtr | pointer | var UIntPtr | @@ -1686,6 +1686,7 @@ param_value_size_ret: var UIntPtr / IntPtr clErrorCode | cl_device_id | clDeviceInfo.DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES | * | var clDeviceIntegerDotProductCapabilities | * | clErrorCode | cl_device_id | clDeviceInfo.DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT | * | var cl_device_integer_dot_product_acceleration_properties | * | clErrorCode | cl_device_id | clDeviceInfo.DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED | * | var cl_device_integer_dot_product_acceleration_properties | * | + clErrorCode | cl_device_id | clDeviceInfo.DEVICE_KERNEL_CLOCK_CAPABILITIES | * | var clDeviceKernelClockCapabilities | * | clErrorCode | cl_device_id | clDeviceInfo.DEVICE_COMMAND_BUFFER_CAPABILITIES | * | var clDeviceCommandBufferCapabilities | * | clErrorCode | cl_device_id | clDeviceInfo.DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES | * | var clCommandQueueProperties | * | clErrorCode | cl_device_id | clDeviceInfo.DEVICE_COMMAND_BUFFER_NUM_SYNC_DEVICES | * | var UInt32 | * | diff --git a/Packing/Template/LowLvl/OpenCL/Log/All Group's.log b/Packing/Template/LowLvl/OpenCL/Log/All Group's.log index d61620f5..df878200 100644 --- a/Packing/Template/LowLvl/OpenCL/Log/All Group's.log +++ b/Packing/Template/LowLvl/OpenCL/Log/All Group's.log @@ -474,6 +474,7 @@ DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES[$1073] DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT[$1074] DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED[$1075] + DEVICE_KERNEL_CLOCK_CAPABILITIES[$1076] DEVICE_COMMAND_BUFFER_CAPABILITIES[$12A9] DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES[$12AA] DEVICE_COMMAND_BUFFER_NUM_SYNC_DEVICES[$12AB] @@ -562,6 +563,11 @@ DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT_PACKED[1 shl 0] DEVICE_INTEGER_DOT_PRODUCT_INPUT_4x8BIT[1 shl 1] +# clDeviceKernelClockCapabilities (cl::DeviceKernelClockCapabilities) : UInt64 (Bitfield) + DEVICE_KERNEL_CLOCK_SCOPE_DEVICE[1 shl 0] + DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP[1 shl 1] + DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP[1 shl 2] + # clDeviceLocalMemType (cl::DeviceLocalMemType) : UInt32 LOCAL[$0001] GLOBAL[$0002] diff --git a/Packing/Template/LowLvl/OpenCL/Log/Essentials.log b/Packing/Template/LowLvl/OpenCL/Log/Essentials.log index b7abe5fd..c65fc5d2 100644 --- a/Packing/Template/LowLvl/OpenCL/Log/Essentials.log +++ b/Packing/Template/LowLvl/OpenCL/Log/Essentials.log @@ -104,11 +104,11 @@ Dumping IdClass items Dumping Struct items Dumping Delegate items PascalBasicType: Packed 12 items -Group: Packed 112 items +Group: Packed 113 items IdClass: Packed 28 items Struct: Packed 17 items Delegate: Packed 7 items Func: Packed 241 items Feature: Packed 1 items -Extension: Packed 130 items +Extension: Packed 134 items Cleanup diff --git a/Packing/Template/LowLvl/OpenCL/Types.Interface.template b/Packing/Template/LowLvl/OpenCL/Types.Interface.template index f35972e6..b38128e1 100644 --- a/Packing/Template/LowLvl/OpenCL/Types.Interface.template +++ b/Packing/Template/LowLvl/OpenCL/Types.Interface.template @@ -1781,6 +1781,7 @@ public static property DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES: clDeviceInfo read new clDeviceInfo($1073); public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT: clDeviceInfo read new clDeviceInfo($1074); public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED: clDeviceInfo read new clDeviceInfo($1075); + public static property DEVICE_KERNEL_CLOCK_CAPABILITIES: clDeviceInfo read new clDeviceInfo($1076); public static property DEVICE_COMMAND_BUFFER_CAPABILITIES: clDeviceInfo read new clDeviceInfo($12A9); public static property DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES: clDeviceInfo read new clDeviceInfo($12AA); public static property DEVICE_COMMAND_BUFFER_NUM_SYNC_DEVICES: clDeviceInfo read new clDeviceInfo($12AB); @@ -2103,6 +2104,8 @@ Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT' else if DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED = self then Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED' else + if DEVICE_KERNEL_CLOCK_CAPABILITIES = self then + Result := 'DEVICE_KERNEL_CLOCK_CAPABILITIES' else if DEVICE_COMMAND_BUFFER_CAPABILITIES = self then Result := 'DEVICE_COMMAND_BUFFER_CAPABILITIES' else if DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES = self then @@ -2323,6 +2326,61 @@ end; + /// + clDeviceKernelClockCapabilities = record + public val: UInt64; + public constructor(val: UInt64) := self.val := val; + + public static property DEVICE_KERNEL_CLOCK_SCOPE_DEVICE: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 0); + public static property DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 1); + public static property DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP: clDeviceKernelClockCapabilities read new clDeviceKernelClockCapabilities(1 shl 2); + + public static function operator+(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val or v2.val); + public static function operator or(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val or v2.val); + + public static function operator-(v1, v2: clDeviceKernelClockCapabilities) := new clDeviceKernelClockCapabilities(v1.val and not v2.val); + + public static procedure operator+=(var v1: clDeviceKernelClockCapabilities; v2: clDeviceKernelClockCapabilities) := v1 := v1+v2; + public static procedure operator-=(var v1: clDeviceKernelClockCapabilities; v2: clDeviceKernelClockCapabilities) := v1 := v1-v2; + + public static function operator in(v1, v2: clDeviceKernelClockCapabilities) := v1.val and v2.val = v1.val; + + public function ToString: string; override; + begin + var res := new StringBuilder; + var left_val := self.val; + if left_val=0 then + begin + Result := 'clDeviceKernelClockCapabilities[0]'; + exit; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_DEVICE in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_DEVICE+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_DEVICE.val; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_WORK_GROUP.val; + end; + if DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP in self then + begin + res += 'DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP+'; + left_val := left_val and not DEVICE_KERNEL_CLOCK_SCOPE_SUB_GROUP.val; + end; + if left_val<>0 then + begin + res += 'clDeviceKernelClockCapabilities['; + res += self.val.ToString; + res += ']+'; + end; + res.Length -= 1; + Result := res.ToString; + end; + + end; + /// clDeviceLocalMemType = record public val: UInt32;