This commit is contained in:
Mikhalkovich Stanislav 2021-10-19 14:35:40 +03:00
parent 1350e178a7
commit bf59fac607
10 changed files with 525 additions and 466 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "8";
public const string Build = "1";
public const string Revision = "2999";
public const string Revision = "3004";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=8
%REVISION%=2999
%COREVERSION%=1
%REVISION%=3004
%MINOR%=8
%MAJOR%=3

View file

@ -1 +1 @@
3.8.1.2999
3.8.1.3004

View file

@ -1 +1 @@
!define VERSION '3.8.1.2999'
!define VERSION '3.8.1.3004'

View file

@ -817,190 +817,199 @@ type
public val: UInt32;
public constructor(val: UInt32) := self.val := val;
public static property DEVICE_TYPE: DeviceInfo read new DeviceInfo($1000);
public static property DEVICE_VENDOR_ID: DeviceInfo read new DeviceInfo($1001);
public static property DEVICE_MAX_COMPUTE_UNITS: DeviceInfo read new DeviceInfo($1002);
public static property DEVICE_MAX_WORK_ITEM_DIMENSIONS: DeviceInfo read new DeviceInfo($1003);
public static property DEVICE_MAX_WORK_GROUP_SIZE: DeviceInfo read new DeviceInfo($1004);
public static property DEVICE_MAX_WORK_ITEM_SIZES: DeviceInfo read new DeviceInfo($1005);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: DeviceInfo read new DeviceInfo($1006);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: DeviceInfo read new DeviceInfo($1007);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_INT: DeviceInfo read new DeviceInfo($1008);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_LONG: DeviceInfo read new DeviceInfo($1009);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: DeviceInfo read new DeviceInfo($100A);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: DeviceInfo read new DeviceInfo($100B);
public static property DEVICE_MAX_CLOCK_FREQUENCY: DeviceInfo read new DeviceInfo($100C);
public static property DEVICE_ADDRESS_BITS: DeviceInfo read new DeviceInfo($100D);
public static property DEVICE_MAX_READ_IMAGE_ARGS: DeviceInfo read new DeviceInfo($100E);
public static property DEVICE_MAX_WRITE_IMAGE_ARGS: DeviceInfo read new DeviceInfo($100F);
public static property DEVICE_MAX_MEM_ALLOC_SIZE: DeviceInfo read new DeviceInfo($1010);
public static property DEVICE_IMAGE2D_MAX_WIDTH: DeviceInfo read new DeviceInfo($1011);
public static property DEVICE_IMAGE2D_MAX_HEIGHT: DeviceInfo read new DeviceInfo($1012);
public static property DEVICE_IMAGE3D_MAX_WIDTH: DeviceInfo read new DeviceInfo($1013);
public static property DEVICE_IMAGE3D_MAX_HEIGHT: DeviceInfo read new DeviceInfo($1014);
public static property DEVICE_IMAGE3D_MAX_DEPTH: DeviceInfo read new DeviceInfo($1015);
public static property DEVICE_IMAGE_SUPPORT: DeviceInfo read new DeviceInfo($1016);
public static property DEVICE_MAX_PARAMETER_SIZE: DeviceInfo read new DeviceInfo($1017);
public static property DEVICE_MAX_SAMPLERS: DeviceInfo read new DeviceInfo($1018);
public static property DEVICE_MEM_BASE_ADDR_ALIGN: DeviceInfo read new DeviceInfo($1019);
public static property DEVICE_MIN_DATA_TYPE_ALIGN_SIZE: DeviceInfo read new DeviceInfo($101A);
public static property DEVICE_SINGLE_FP_CONFIG: DeviceInfo read new DeviceInfo($101B);
public static property DEVICE_GLOBAL_MEM_CACHE_TYPE: DeviceInfo read new DeviceInfo($101C);
public static property DEVICE_GLOBAL_MEM_CACHELINE_SIZE: DeviceInfo read new DeviceInfo($101D);
public static property DEVICE_GLOBAL_MEM_CACHE_SIZE: DeviceInfo read new DeviceInfo($101E);
public static property DEVICE_GLOBAL_MEM_SIZE: DeviceInfo read new DeviceInfo($101F);
public static property DEVICE_MAX_CONSTANT_BUFFER_SIZE: DeviceInfo read new DeviceInfo($1020);
public static property DEVICE_MAX_CONSTANT_ARGS: DeviceInfo read new DeviceInfo($1021);
public static property DEVICE_LOCAL_MEM_TYPE: DeviceInfo read new DeviceInfo($1022);
public static property DEVICE_LOCAL_MEM_SIZE: DeviceInfo read new DeviceInfo($1023);
public static property DEVICE_ERROR_CORRECTION_SUPPORT: DeviceInfo read new DeviceInfo($1024);
public static property DEVICE_PROFILING_TIMER_RESOLUTION: DeviceInfo read new DeviceInfo($1025);
public static property DEVICE_ENDIAN_LITTLE: DeviceInfo read new DeviceInfo($1026);
public static property DEVICE_AVAILABLE: DeviceInfo read new DeviceInfo($1027);
public static property DEVICE_COMPILER_AVAILABLE: DeviceInfo read new DeviceInfo($1028);
public static property DEVICE_EXECUTION_CAPABILITIES: DeviceInfo read new DeviceInfo($1029);
public static property DEVICE_QUEUE_ON_HOST_PROPERTIES: DeviceInfo read new DeviceInfo($102A);
public static property DEVICE_QUEUE_PROPERTIES: DeviceInfo read new DeviceInfo($102A);
public static property DEVICE_NAME: DeviceInfo read new DeviceInfo($102B);
public static property DEVICE_VENDOR: DeviceInfo read new DeviceInfo($102C);
public static property DRIVER_VERSION: DeviceInfo read new DeviceInfo($102D);
public static property DEVICE_PROFILE: DeviceInfo read new DeviceInfo($102E);
public static property DEVICE_VERSION: DeviceInfo read new DeviceInfo($102F);
public static property DEVICE_EXTENSIONS: DeviceInfo read new DeviceInfo($1030);
public static property DEVICE_PLATFORM: DeviceInfo read new DeviceInfo($1031);
public static property DEVICE_DOUBLE_FP_CONFIG: DeviceInfo read new DeviceInfo($1032);
public static property DEVICE_HALF_FP_CONFIG: DeviceInfo read new DeviceInfo($1033);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_HALF: DeviceInfo read new DeviceInfo($1034);
public static property DEVICE_HOST_UNIFIED_MEMORY: DeviceInfo read new DeviceInfo($1035);
public static property DEVICE_NATIVE_VECTOR_WIDTH_CHAR: DeviceInfo read new DeviceInfo($1036);
public static property DEVICE_NATIVE_VECTOR_WIDTH_SHORT: DeviceInfo read new DeviceInfo($1037);
public static property DEVICE_NATIVE_VECTOR_WIDTH_INT: DeviceInfo read new DeviceInfo($1038);
public static property DEVICE_NATIVE_VECTOR_WIDTH_LONG: DeviceInfo read new DeviceInfo($1039);
public static property DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: DeviceInfo read new DeviceInfo($103A);
public static property DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: DeviceInfo read new DeviceInfo($103B);
public static property DEVICE_NATIVE_VECTOR_WIDTH_HALF: DeviceInfo read new DeviceInfo($103C);
public static property DEVICE_OPENCL_C_VERSION: DeviceInfo read new DeviceInfo($103D);
public static property DEVICE_LINKER_AVAILABLE: DeviceInfo read new DeviceInfo($103E);
public static property DEVICE_BUILT_IN_KERNELS: DeviceInfo read new DeviceInfo($103F);
public static property DEVICE_IMAGE_MAX_BUFFER_SIZE: DeviceInfo read new DeviceInfo($1040);
public static property DEVICE_IMAGE_MAX_ARRAY_SIZE: DeviceInfo read new DeviceInfo($1041);
public static property DEVICE_PARENT_DEVICE: DeviceInfo read new DeviceInfo($1042);
public static property DEVICE_PARTITION_MAX_SUB_DEVICES: DeviceInfo read new DeviceInfo($1043);
public static property DEVICE_PARTITION_PROPERTIES: DeviceInfo read new DeviceInfo($1044);
public static property DEVICE_PARTITION_AFFINITY_DOMAIN: DeviceInfo read new DeviceInfo($1045);
public static property DEVICE_PARTITION_TYPE: DeviceInfo read new DeviceInfo($1046);
public static property DEVICE_REFERENCE_COUNT: DeviceInfo read new DeviceInfo($1047);
public static property DEVICE_PREFERRED_INTEROP_USER_SYNC: DeviceInfo read new DeviceInfo($1048);
public static property DEVICE_PRINTF_BUFFER_SIZE: DeviceInfo read new DeviceInfo($1049);
public static property DEVICE_IMAGE_PITCH_ALIGNMENT: DeviceInfo read new DeviceInfo($104A);
public static property DEVICE_IMAGE_PITCH_ALIGNMENT_KHR: DeviceInfo read new DeviceInfo($104A);
public static property DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT: DeviceInfo read new DeviceInfo($104B);
public static property DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR: DeviceInfo read new DeviceInfo($104B);
public static property DEVICE_MAX_READ_WRITE_IMAGE_ARGS: DeviceInfo read new DeviceInfo($104C);
public static property DEVICE_MAX_GLOBAL_VARIABLE_SIZE: DeviceInfo read new DeviceInfo($104D);
public static property DEVICE_QUEUE_ON_DEVICE_PROPERTIES: DeviceInfo read new DeviceInfo($104E);
public static property DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE: DeviceInfo read new DeviceInfo($104F);
public static property DEVICE_QUEUE_ON_DEVICE_MAX_SIZE: DeviceInfo read new DeviceInfo($1050);
public static property DEVICE_MAX_ON_DEVICE_QUEUES: DeviceInfo read new DeviceInfo($1051);
public static property DEVICE_MAX_ON_DEVICE_EVENTS: DeviceInfo read new DeviceInfo($1052);
public static property DEVICE_SVM_CAPABILITIES: DeviceInfo read new DeviceInfo($1053);
public static property DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE: DeviceInfo read new DeviceInfo($1054);
public static property DEVICE_MAX_PIPE_ARGS: DeviceInfo read new DeviceInfo($1055);
public static property DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS: DeviceInfo read new DeviceInfo($1056);
public static property DEVICE_PIPE_MAX_PACKET_SIZE: DeviceInfo read new DeviceInfo($1057);
public static property DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT: DeviceInfo read new DeviceInfo($1058);
public static property DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT: DeviceInfo read new DeviceInfo($1059);
public static property DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT: DeviceInfo read new DeviceInfo($105A);
public static property DEVICE_IL_VERSION: DeviceInfo read new DeviceInfo($105B);
public static property DEVICE_IL_VERSION_KHR: DeviceInfo read new DeviceInfo($105B);
public static property DEVICE_MAX_NUM_SUB_GROUPS: DeviceInfo read new DeviceInfo($105C);
public static property DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS: DeviceInfo read new DeviceInfo($105D);
public static property DEVICE_NUMERIC_VERSION: DeviceInfo read new DeviceInfo($105E);
public static property DEVICE_NUMERIC_VERSION_KHR: DeviceInfo read new DeviceInfo($105E);
public static property DEVICE_OPENCL_C_NUMERIC_VERSION_KHR: DeviceInfo read new DeviceInfo($105F);
public static property DEVICE_EXTENSIONS_WITH_VERSION: DeviceInfo read new DeviceInfo($1060);
public static property DEVICE_EXTENSIONS_WITH_VERSION_KHR: DeviceInfo read new DeviceInfo($1060);
public static property DEVICE_ILS_WITH_VERSION: DeviceInfo read new DeviceInfo($1061);
public static property DEVICE_ILS_WITH_VERSION_KHR: DeviceInfo read new DeviceInfo($1061);
public static property DEVICE_BUILT_IN_KERNELS_WITH_VERSION: DeviceInfo read new DeviceInfo($1062);
public static property DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR: DeviceInfo read new DeviceInfo($1062);
public static property DEVICE_ATOMIC_MEMORY_CAPABILITIES: DeviceInfo read new DeviceInfo($1063);
public static property DEVICE_ATOMIC_FENCE_CAPABILITIES: DeviceInfo read new DeviceInfo($1064);
public static property DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT: DeviceInfo read new DeviceInfo($1065);
public static property DEVICE_OPENCL_C_ALL_VERSIONS: DeviceInfo read new DeviceInfo($1066);
public static property DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE: DeviceInfo read new DeviceInfo($1067);
public static property DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT: DeviceInfo read new DeviceInfo($1068);
public static property DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT: DeviceInfo read new DeviceInfo($1069);
public static property DEVICE_UUID_KHR: DeviceInfo read new DeviceInfo($106A);
public static property DRIVER_UUID_KHR: DeviceInfo read new DeviceInfo($106B);
public static property DEVICE_LUID_VALID_KHR: DeviceInfo read new DeviceInfo($106C);
public static property DEVICE_LUID_KHR: DeviceInfo read new DeviceInfo($106D);
public static property DEVICE_NODE_MASK_KHR: DeviceInfo read new DeviceInfo($106E);
public static property DEVICE_OPENCL_C_FEATURES: DeviceInfo read new DeviceInfo($106F);
public static property DEVICE_DEVICE_ENQUEUE_CAPABILITIES: DeviceInfo read new DeviceInfo($1070);
public static property DEVICE_PIPE_SUPPORT: DeviceInfo read new DeviceInfo($1071);
public static property DEVICE_LATEST_CONFORMANCE_VERSION_PASSED: DeviceInfo read new DeviceInfo($1072);
public static property DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR: DeviceInfo read new DeviceInfo($1073);
public static property DEVICE_TERMINATE_CAPABILITY_KHR: DeviceInfo read new DeviceInfo($2031);
public static property DEVICE_MAX_NAMED_BARRIER_COUNT_KHR: DeviceInfo read new DeviceInfo($2035);
public static property DEVICE_COMPUTE_CAPABILITY_MAJOR_NV: DeviceInfo read new DeviceInfo($4000);
public static property DEVICE_COMPUTE_CAPABILITY_MINOR_NV: DeviceInfo read new DeviceInfo($4001);
public static property DEVICE_REGISTERS_PER_BLOCK_NV: DeviceInfo read new DeviceInfo($4002);
public static property DEVICE_WARP_SIZE_NV: DeviceInfo read new DeviceInfo($4003);
public static property DEVICE_GPU_OVERLAP_NV: DeviceInfo read new DeviceInfo($4004);
public static property DEVICE_KERNEL_EXEC_TIMEOUT_NV: DeviceInfo read new DeviceInfo($4005);
public static property DEVICE_INTEGRATED_MEMORY_NV: DeviceInfo read new DeviceInfo($4006);
public static property DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD: DeviceInfo read new DeviceInfo($4030);
public static property DEVICE_MAX_WORK_GROUP_SIZE_AMD: DeviceInfo read new DeviceInfo($4031);
public static property DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD: DeviceInfo read new DeviceInfo($4033);
public static property DEVICE_PCIE_ID_AMD: DeviceInfo read new DeviceInfo($4034);
public static property DEVICE_PROFILING_TIMER_OFFSET_AMD: DeviceInfo read new DeviceInfo($4036);
public static property DEVICE_TOPOLOGY_AMD: DeviceInfo read new DeviceInfo($4037);
public static property DEVICE_BOARD_NAME_AMD: DeviceInfo read new DeviceInfo($4038);
public static property DEVICE_GLOBAL_FREE_MEMORY_AMD: DeviceInfo read new DeviceInfo($4039);
public static property DEVICE_SIMD_PER_COMPUTE_UNIT_AMD: DeviceInfo read new DeviceInfo($4040);
public static property DEVICE_SIMD_WIDTH_AMD: DeviceInfo read new DeviceInfo($4041);
public static property DEVICE_SIMD_INSTRUCTION_WIDTH_AMD: DeviceInfo read new DeviceInfo($4042);
public static property DEVICE_WAVEFRONT_WIDTH_AMD: DeviceInfo read new DeviceInfo($4043);
public static property DEVICE_GLOBAL_MEM_CHANNELS_AMD: DeviceInfo read new DeviceInfo($4044);
public static property DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD: DeviceInfo read new DeviceInfo($4045);
public static property DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD: DeviceInfo read new DeviceInfo($4046);
public static property DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD: DeviceInfo read new DeviceInfo($4047);
public static property DEVICE_LOCAL_MEM_BANKS_AMD: DeviceInfo read new DeviceInfo($4048);
public static property DEVICE_THREAD_TRACE_SUPPORTED_AMD: DeviceInfo read new DeviceInfo($4049);
public static property DEVICE_GFXIP_MAJOR_AMD: DeviceInfo read new DeviceInfo($404A);
public static property DEVICE_GFXIP_MINOR_AMD: DeviceInfo read new DeviceInfo($404B);
public static property DEVICE_AVAILABLE_ASYNC_QUEUES_AMD: DeviceInfo read new DeviceInfo($404C);
public static property DEVICE_PARENT_DEVICE_EXT: DeviceInfo read new DeviceInfo($4054);
public static property DEVICE_PARTITION_TYPES_EXT: DeviceInfo read new DeviceInfo($4055);
public static property DEVICE_AFFINITY_DOMAINS_EXT: DeviceInfo read new DeviceInfo($4056);
public static property DEVICE_REFERENCE_COUNT_EXT: DeviceInfo read new DeviceInfo($4057);
public static property DEVICE_PARTITION_STYLE_EXT: DeviceInfo read new DeviceInfo($4058);
public static property DEVICE_ME_VERSION_INTEL: DeviceInfo read new DeviceInfo($407E);
public static property DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM: DeviceInfo read new DeviceInfo($40A0);
public static property DEVICE_PAGE_SIZE_QCOM: DeviceInfo read new DeviceInfo($40A1);
public static property DEVICE_SVM_CAPABILITIES_ARM: DeviceInfo read new DeviceInfo($40B6);
public static property DEVICE_COMPUTE_UNITS_BITFIELD_ARM: DeviceInfo read new DeviceInfo($40BF);
public static property DEVICE_SPIR_VERSIONS: DeviceInfo read new DeviceInfo($40E0);
public static property DEVICE_SIMULTANEOUS_INTEROPS_INTEL: DeviceInfo read new DeviceInfo($4104);
public static property DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL: DeviceInfo read new DeviceInfo($4105);
public static property DEVICE_SUB_GROUP_SIZES_INTEL: DeviceInfo read new DeviceInfo($4108);
public static property DEVICE_AVC_ME_VERSION_INTEL: DeviceInfo read new DeviceInfo($410B);
public static property DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL: DeviceInfo read new DeviceInfo($410C);
public static property DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL: DeviceInfo read new DeviceInfo($410D);
public static property DEVICE_PCI_BUS_INFO_KHR: DeviceInfo read new DeviceInfo($410F);
public static property DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL: DeviceInfo read new DeviceInfo($417E);
public static property DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL: DeviceInfo read new DeviceInfo($417F);
public static property DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL: DeviceInfo read new DeviceInfo($418B);
public static property DEVICE_HOST_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4190);
public static property DEVICE_DEVICE_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4191);
public static property DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4192);
public static property DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4193);
public static property DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4194);
public static property DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM: DeviceInfo read new DeviceInfo($41E4);
public static property DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM: DeviceInfo read new DeviceInfo($41EB);
public static property DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM: DeviceInfo read new DeviceInfo($41EE);
public static property DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT: DeviceInfo read new DeviceInfo($4230);
public static property DEVICE_TYPE: DeviceInfo read new DeviceInfo($1000);
public static property DEVICE_VENDOR_ID: DeviceInfo read new DeviceInfo($1001);
public static property DEVICE_MAX_COMPUTE_UNITS: DeviceInfo read new DeviceInfo($1002);
public static property DEVICE_MAX_WORK_ITEM_DIMENSIONS: DeviceInfo read new DeviceInfo($1003);
public static property DEVICE_MAX_WORK_GROUP_SIZE: DeviceInfo read new DeviceInfo($1004);
public static property DEVICE_MAX_WORK_ITEM_SIZES: DeviceInfo read new DeviceInfo($1005);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_CHAR: DeviceInfo read new DeviceInfo($1006);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_SHORT: DeviceInfo read new DeviceInfo($1007);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_INT: DeviceInfo read new DeviceInfo($1008);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_LONG: DeviceInfo read new DeviceInfo($1009);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT: DeviceInfo read new DeviceInfo($100A);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE: DeviceInfo read new DeviceInfo($100B);
public static property DEVICE_MAX_CLOCK_FREQUENCY: DeviceInfo read new DeviceInfo($100C);
public static property DEVICE_ADDRESS_BITS: DeviceInfo read new DeviceInfo($100D);
public static property DEVICE_MAX_READ_IMAGE_ARGS: DeviceInfo read new DeviceInfo($100E);
public static property DEVICE_MAX_WRITE_IMAGE_ARGS: DeviceInfo read new DeviceInfo($100F);
public static property DEVICE_MAX_MEM_ALLOC_SIZE: DeviceInfo read new DeviceInfo($1010);
public static property DEVICE_IMAGE2D_MAX_WIDTH: DeviceInfo read new DeviceInfo($1011);
public static property DEVICE_IMAGE2D_MAX_HEIGHT: DeviceInfo read new DeviceInfo($1012);
public static property DEVICE_IMAGE3D_MAX_WIDTH: DeviceInfo read new DeviceInfo($1013);
public static property DEVICE_IMAGE3D_MAX_HEIGHT: DeviceInfo read new DeviceInfo($1014);
public static property DEVICE_IMAGE3D_MAX_DEPTH: DeviceInfo read new DeviceInfo($1015);
public static property DEVICE_IMAGE_SUPPORT: DeviceInfo read new DeviceInfo($1016);
public static property DEVICE_MAX_PARAMETER_SIZE: DeviceInfo read new DeviceInfo($1017);
public static property DEVICE_MAX_SAMPLERS: DeviceInfo read new DeviceInfo($1018);
public static property DEVICE_MEM_BASE_ADDR_ALIGN: DeviceInfo read new DeviceInfo($1019);
public static property DEVICE_MIN_DATA_TYPE_ALIGN_SIZE: DeviceInfo read new DeviceInfo($101A);
public static property DEVICE_SINGLE_FP_CONFIG: DeviceInfo read new DeviceInfo($101B);
public static property DEVICE_GLOBAL_MEM_CACHE_TYPE: DeviceInfo read new DeviceInfo($101C);
public static property DEVICE_GLOBAL_MEM_CACHELINE_SIZE: DeviceInfo read new DeviceInfo($101D);
public static property DEVICE_GLOBAL_MEM_CACHE_SIZE: DeviceInfo read new DeviceInfo($101E);
public static property DEVICE_GLOBAL_MEM_SIZE: DeviceInfo read new DeviceInfo($101F);
public static property DEVICE_MAX_CONSTANT_BUFFER_SIZE: DeviceInfo read new DeviceInfo($1020);
public static property DEVICE_MAX_CONSTANT_ARGS: DeviceInfo read new DeviceInfo($1021);
public static property DEVICE_LOCAL_MEM_TYPE: DeviceInfo read new DeviceInfo($1022);
public static property DEVICE_LOCAL_MEM_SIZE: DeviceInfo read new DeviceInfo($1023);
public static property DEVICE_ERROR_CORRECTION_SUPPORT: DeviceInfo read new DeviceInfo($1024);
public static property DEVICE_PROFILING_TIMER_RESOLUTION: DeviceInfo read new DeviceInfo($1025);
public static property DEVICE_ENDIAN_LITTLE: DeviceInfo read new DeviceInfo($1026);
public static property DEVICE_AVAILABLE: DeviceInfo read new DeviceInfo($1027);
public static property DEVICE_COMPILER_AVAILABLE: DeviceInfo read new DeviceInfo($1028);
public static property DEVICE_EXECUTION_CAPABILITIES: DeviceInfo read new DeviceInfo($1029);
public static property DEVICE_QUEUE_ON_HOST_PROPERTIES: DeviceInfo read new DeviceInfo($102A);
public static property DEVICE_QUEUE_PROPERTIES: DeviceInfo read new DeviceInfo($102A);
public static property DEVICE_NAME: DeviceInfo read new DeviceInfo($102B);
public static property DEVICE_VENDOR: DeviceInfo read new DeviceInfo($102C);
public static property DRIVER_VERSION: DeviceInfo read new DeviceInfo($102D);
public static property DEVICE_PROFILE: DeviceInfo read new DeviceInfo($102E);
public static property DEVICE_VERSION: DeviceInfo read new DeviceInfo($102F);
public static property DEVICE_EXTENSIONS: DeviceInfo read new DeviceInfo($1030);
public static property DEVICE_PLATFORM: DeviceInfo read new DeviceInfo($1031);
public static property DEVICE_DOUBLE_FP_CONFIG: DeviceInfo read new DeviceInfo($1032);
public static property DEVICE_HALF_FP_CONFIG: DeviceInfo read new DeviceInfo($1033);
public static property DEVICE_PREFERRED_VECTOR_WIDTH_HALF: DeviceInfo read new DeviceInfo($1034);
public static property DEVICE_HOST_UNIFIED_MEMORY: DeviceInfo read new DeviceInfo($1035);
public static property DEVICE_NATIVE_VECTOR_WIDTH_CHAR: DeviceInfo read new DeviceInfo($1036);
public static property DEVICE_NATIVE_VECTOR_WIDTH_SHORT: DeviceInfo read new DeviceInfo($1037);
public static property DEVICE_NATIVE_VECTOR_WIDTH_INT: DeviceInfo read new DeviceInfo($1038);
public static property DEVICE_NATIVE_VECTOR_WIDTH_LONG: DeviceInfo read new DeviceInfo($1039);
public static property DEVICE_NATIVE_VECTOR_WIDTH_FLOAT: DeviceInfo read new DeviceInfo($103A);
public static property DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE: DeviceInfo read new DeviceInfo($103B);
public static property DEVICE_NATIVE_VECTOR_WIDTH_HALF: DeviceInfo read new DeviceInfo($103C);
public static property DEVICE_OPENCL_C_VERSION: DeviceInfo read new DeviceInfo($103D);
public static property DEVICE_LINKER_AVAILABLE: DeviceInfo read new DeviceInfo($103E);
public static property DEVICE_BUILT_IN_KERNELS: DeviceInfo read new DeviceInfo($103F);
public static property DEVICE_IMAGE_MAX_BUFFER_SIZE: DeviceInfo read new DeviceInfo($1040);
public static property DEVICE_IMAGE_MAX_ARRAY_SIZE: DeviceInfo read new DeviceInfo($1041);
public static property DEVICE_PARENT_DEVICE: DeviceInfo read new DeviceInfo($1042);
public static property DEVICE_PARTITION_MAX_SUB_DEVICES: DeviceInfo read new DeviceInfo($1043);
public static property DEVICE_PARTITION_PROPERTIES: DeviceInfo read new DeviceInfo($1044);
public static property DEVICE_PARTITION_AFFINITY_DOMAIN: DeviceInfo read new DeviceInfo($1045);
public static property DEVICE_PARTITION_TYPE: DeviceInfo read new DeviceInfo($1046);
public static property DEVICE_REFERENCE_COUNT: DeviceInfo read new DeviceInfo($1047);
public static property DEVICE_PREFERRED_INTEROP_USER_SYNC: DeviceInfo read new DeviceInfo($1048);
public static property DEVICE_PRINTF_BUFFER_SIZE: DeviceInfo read new DeviceInfo($1049);
public static property DEVICE_IMAGE_PITCH_ALIGNMENT: DeviceInfo read new DeviceInfo($104A);
public static property DEVICE_IMAGE_PITCH_ALIGNMENT_KHR: DeviceInfo read new DeviceInfo($104A);
public static property DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT: DeviceInfo read new DeviceInfo($104B);
public static property DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT_KHR: DeviceInfo read new DeviceInfo($104B);
public static property DEVICE_MAX_READ_WRITE_IMAGE_ARGS: DeviceInfo read new DeviceInfo($104C);
public static property DEVICE_MAX_GLOBAL_VARIABLE_SIZE: DeviceInfo read new DeviceInfo($104D);
public static property DEVICE_QUEUE_ON_DEVICE_PROPERTIES: DeviceInfo read new DeviceInfo($104E);
public static property DEVICE_QUEUE_ON_DEVICE_PREFERRED_SIZE: DeviceInfo read new DeviceInfo($104F);
public static property DEVICE_QUEUE_ON_DEVICE_MAX_SIZE: DeviceInfo read new DeviceInfo($1050);
public static property DEVICE_MAX_ON_DEVICE_QUEUES: DeviceInfo read new DeviceInfo($1051);
public static property DEVICE_MAX_ON_DEVICE_EVENTS: DeviceInfo read new DeviceInfo($1052);
public static property DEVICE_SVM_CAPABILITIES: DeviceInfo read new DeviceInfo($1053);
public static property DEVICE_GLOBAL_VARIABLE_PREFERRED_TOTAL_SIZE: DeviceInfo read new DeviceInfo($1054);
public static property DEVICE_MAX_PIPE_ARGS: DeviceInfo read new DeviceInfo($1055);
public static property DEVICE_PIPE_MAX_ACTIVE_RESERVATIONS: DeviceInfo read new DeviceInfo($1056);
public static property DEVICE_PIPE_MAX_PACKET_SIZE: DeviceInfo read new DeviceInfo($1057);
public static property DEVICE_PREFERRED_PLATFORM_ATOMIC_ALIGNMENT: DeviceInfo read new DeviceInfo($1058);
public static property DEVICE_PREFERRED_GLOBAL_ATOMIC_ALIGNMENT: DeviceInfo read new DeviceInfo($1059);
public static property DEVICE_PREFERRED_LOCAL_ATOMIC_ALIGNMENT: DeviceInfo read new DeviceInfo($105A);
public static property DEVICE_IL_VERSION: DeviceInfo read new DeviceInfo($105B);
public static property DEVICE_IL_VERSION_KHR: DeviceInfo read new DeviceInfo($105B);
public static property DEVICE_MAX_NUM_SUB_GROUPS: DeviceInfo read new DeviceInfo($105C);
public static property DEVICE_SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS: DeviceInfo read new DeviceInfo($105D);
public static property DEVICE_NUMERIC_VERSION: DeviceInfo read new DeviceInfo($105E);
public static property DEVICE_NUMERIC_VERSION_KHR: DeviceInfo read new DeviceInfo($105E);
public static property DEVICE_OPENCL_C_NUMERIC_VERSION_KHR: DeviceInfo read new DeviceInfo($105F);
public static property DEVICE_EXTENSIONS_WITH_VERSION: DeviceInfo read new DeviceInfo($1060);
public static property DEVICE_EXTENSIONS_WITH_VERSION_KHR: DeviceInfo read new DeviceInfo($1060);
public static property DEVICE_ILS_WITH_VERSION: DeviceInfo read new DeviceInfo($1061);
public static property DEVICE_ILS_WITH_VERSION_KHR: DeviceInfo read new DeviceInfo($1061);
public static property DEVICE_BUILT_IN_KERNELS_WITH_VERSION: DeviceInfo read new DeviceInfo($1062);
public static property DEVICE_BUILT_IN_KERNELS_WITH_VERSION_KHR: DeviceInfo read new DeviceInfo($1062);
public static property DEVICE_ATOMIC_MEMORY_CAPABILITIES: DeviceInfo read new DeviceInfo($1063);
public static property DEVICE_ATOMIC_FENCE_CAPABILITIES: DeviceInfo read new DeviceInfo($1064);
public static property DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT: DeviceInfo read new DeviceInfo($1065);
public static property DEVICE_OPENCL_C_ALL_VERSIONS: DeviceInfo read new DeviceInfo($1066);
public static property DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE: DeviceInfo read new DeviceInfo($1067);
public static property DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT: DeviceInfo read new DeviceInfo($1068);
public static property DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT: DeviceInfo read new DeviceInfo($1069);
public static property DEVICE_UUID_KHR: DeviceInfo read new DeviceInfo($106A);
public static property DRIVER_UUID_KHR: DeviceInfo read new DeviceInfo($106B);
public static property DEVICE_LUID_VALID_KHR: DeviceInfo read new DeviceInfo($106C);
public static property DEVICE_LUID_KHR: DeviceInfo read new DeviceInfo($106D);
public static property DEVICE_NODE_MASK_KHR: DeviceInfo read new DeviceInfo($106E);
public static property DEVICE_OPENCL_C_FEATURES: DeviceInfo read new DeviceInfo($106F);
public static property DEVICE_DEVICE_ENQUEUE_CAPABILITIES: DeviceInfo read new DeviceInfo($1070);
public static property DEVICE_PIPE_SUPPORT: DeviceInfo read new DeviceInfo($1071);
public static property DEVICE_LATEST_CONFORMANCE_VERSION_PASSED: DeviceInfo read new DeviceInfo($1072);
public static property DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR: DeviceInfo read new DeviceInfo($1073);
public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT_KHR: DeviceInfo read new DeviceInfo($1074);
public static property DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR: DeviceInfo read new DeviceInfo($1075);
public static property DEVICE_TERMINATE_CAPABILITY_KHR: DeviceInfo read new DeviceInfo($2031);
public static property DEVICE_MAX_NAMED_BARRIER_COUNT_KHR: DeviceInfo read new DeviceInfo($2035);
public static property DEVICE_COMPUTE_CAPABILITY_MAJOR_NV: DeviceInfo read new DeviceInfo($4000);
public static property DEVICE_COMPUTE_CAPABILITY_MINOR_NV: DeviceInfo read new DeviceInfo($4001);
public static property DEVICE_REGISTERS_PER_BLOCK_NV: DeviceInfo read new DeviceInfo($4002);
public static property DEVICE_WARP_SIZE_NV: DeviceInfo read new DeviceInfo($4003);
public static property DEVICE_GPU_OVERLAP_NV: DeviceInfo read new DeviceInfo($4004);
public static property DEVICE_KERNEL_EXEC_TIMEOUT_NV: DeviceInfo read new DeviceInfo($4005);
public static property DEVICE_INTEGRATED_MEMORY_NV: DeviceInfo read new DeviceInfo($4006);
public static property DEVICE_PREFERRED_WORK_GROUP_SIZE_AMD: DeviceInfo read new DeviceInfo($4030);
public static property DEVICE_MAX_WORK_GROUP_SIZE_AMD: DeviceInfo read new DeviceInfo($4031);
public static property DEVICE_PREFERRED_CONSTANT_BUFFER_SIZE_AMD: DeviceInfo read new DeviceInfo($4033);
public static property DEVICE_PCIE_ID_AMD: DeviceInfo read new DeviceInfo($4034);
public static property DEVICE_PROFILING_TIMER_OFFSET_AMD: DeviceInfo read new DeviceInfo($4036);
public static property DEVICE_TOPOLOGY_AMD: DeviceInfo read new DeviceInfo($4037);
public static property DEVICE_BOARD_NAME_AMD: DeviceInfo read new DeviceInfo($4038);
public static property DEVICE_GLOBAL_FREE_MEMORY_AMD: DeviceInfo read new DeviceInfo($4039);
public static property DEVICE_SIMD_PER_COMPUTE_UNIT_AMD: DeviceInfo read new DeviceInfo($4040);
public static property DEVICE_SIMD_WIDTH_AMD: DeviceInfo read new DeviceInfo($4041);
public static property DEVICE_SIMD_INSTRUCTION_WIDTH_AMD: DeviceInfo read new DeviceInfo($4042);
public static property DEVICE_WAVEFRONT_WIDTH_AMD: DeviceInfo read new DeviceInfo($4043);
public static property DEVICE_GLOBAL_MEM_CHANNELS_AMD: DeviceInfo read new DeviceInfo($4044);
public static property DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD: DeviceInfo read new DeviceInfo($4045);
public static property DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD: DeviceInfo read new DeviceInfo($4046);
public static property DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD: DeviceInfo read new DeviceInfo($4047);
public static property DEVICE_LOCAL_MEM_BANKS_AMD: DeviceInfo read new DeviceInfo($4048);
public static property DEVICE_THREAD_TRACE_SUPPORTED_AMD: DeviceInfo read new DeviceInfo($4049);
public static property DEVICE_GFXIP_MAJOR_AMD: DeviceInfo read new DeviceInfo($404A);
public static property DEVICE_GFXIP_MINOR_AMD: DeviceInfo read new DeviceInfo($404B);
public static property DEVICE_AVAILABLE_ASYNC_QUEUES_AMD: DeviceInfo read new DeviceInfo($404C);
public static property DEVICE_PARENT_DEVICE_EXT: DeviceInfo read new DeviceInfo($4054);
public static property DEVICE_PARTITION_TYPES_EXT: DeviceInfo read new DeviceInfo($4055);
public static property DEVICE_AFFINITY_DOMAINS_EXT: DeviceInfo read new DeviceInfo($4056);
public static property DEVICE_REFERENCE_COUNT_EXT: DeviceInfo read new DeviceInfo($4057);
public static property DEVICE_PARTITION_STYLE_EXT: DeviceInfo read new DeviceInfo($4058);
public static property DEVICE_ME_VERSION_INTEL: DeviceInfo read new DeviceInfo($407E);
public static property DEVICE_EXT_MEM_PADDING_IN_BYTES_QCOM: DeviceInfo read new DeviceInfo($40A0);
public static property DEVICE_PAGE_SIZE_QCOM: DeviceInfo read new DeviceInfo($40A1);
public static property DEVICE_SVM_CAPABILITIES_ARM: DeviceInfo read new DeviceInfo($40B6);
public static property DEVICE_COMPUTE_UNITS_BITFIELD_ARM: DeviceInfo read new DeviceInfo($40BF);
public static property DEVICE_SPIR_VERSIONS: DeviceInfo read new DeviceInfo($40E0);
public static property DEVICE_SIMULTANEOUS_INTEROPS_INTEL: DeviceInfo read new DeviceInfo($4104);
public static property DEVICE_NUM_SIMULTANEOUS_INTEROPS_INTEL: DeviceInfo read new DeviceInfo($4105);
public static property DEVICE_SUB_GROUP_SIZES_INTEL: DeviceInfo read new DeviceInfo($4108);
public static property DEVICE_AVC_ME_VERSION_INTEL: DeviceInfo read new DeviceInfo($410B);
public static property DEVICE_AVC_ME_SUPPORTS_TEXTURE_SAMPLER_USE_INTEL: DeviceInfo read new DeviceInfo($410C);
public static property DEVICE_AVC_ME_SUPPORTS_PREEMPTION_INTEL: DeviceInfo read new DeviceInfo($410D);
public static property DEVICE_PCI_BUS_INFO_KHR: DeviceInfo read new DeviceInfo($410F);
public static property DEVICE_PLANAR_YUV_MAX_WIDTH_INTEL: DeviceInfo read new DeviceInfo($417E);
public static property DEVICE_PLANAR_YUV_MAX_HEIGHT_INTEL: DeviceInfo read new DeviceInfo($417F);
public static property DEVICE_QUEUE_FAMILY_PROPERTIES_INTEL: DeviceInfo read new DeviceInfo($418B);
public static property DEVICE_HOST_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4190);
public static property DEVICE_DEVICE_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4191);
public static property DEVICE_SINGLE_DEVICE_SHARED_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4192);
public static property DEVICE_CROSS_DEVICE_SHARED_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4193);
public static property DEVICE_SHARED_SYSTEM_MEM_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4194);
public static property DEVICE_SCHEDULING_CONTROLS_CAPABILITIES_ARM: DeviceInfo read new DeviceInfo($41E4);
public static property DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM: DeviceInfo read new DeviceInfo($41EB);
public static property DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM: DeviceInfo read new DeviceInfo($41EE);
public static property DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT: DeviceInfo read new DeviceInfo($4230);
public static property DEVICE_IP_VERSION_INTEL: DeviceInfo read new DeviceInfo($4250);
public static property DEVICE_ID_INTEL: DeviceInfo read new DeviceInfo($4251);
public static property DEVICE_NUM_SLICES_INTEL: DeviceInfo read new DeviceInfo($4252);
public static property DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL: DeviceInfo read new DeviceInfo($4253);
public static property DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL: DeviceInfo read new DeviceInfo($4254);
public static property DEVICE_NUM_THREADS_PER_EU_INTEL: DeviceInfo read new DeviceInfo($4255);
public static property DEVICE_FEATURE_CAPABILITIES_INTEL: DeviceInfo read new DeviceInfo($4256);
public function ToString: string; override;
begin
@ -1128,6 +1137,8 @@ type
if self.val = UInt32($1071) then Result := 'DEVICE_PIPE_SUPPORT' else
if self.val = UInt32($1072) then Result := 'DEVICE_LATEST_CONFORMANCE_VERSION_PASSED' else
if self.val = UInt32($1073) then Result := 'DEVICE_INTEGER_DOT_PRODUCT_CAPABILITIES_KHR' else
if self.val = UInt32($1074) then Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_8BIT_KHR' else
if self.val = UInt32($1075) then Result := 'DEVICE_INTEGER_DOT_PRODUCT_ACCELERATION_PROPERTIES_4x8BIT_PACKED_KHR' else
if self.val = UInt32($2031) then Result := 'DEVICE_TERMINATE_CAPABILITY_KHR' else
if self.val = UInt32($2035) then Result := 'DEVICE_MAX_NAMED_BARRIER_COUNT_KHR' else
if self.val = UInt32($4000) then Result := 'DEVICE_COMPUTE_CAPABILITY_MAJOR_NV' else
@ -1188,6 +1199,13 @@ type
if self.val = UInt32($41EB) then Result := 'DEVICE_SUPPORTED_REGISTER_ALLOCATIONS_ARM' else
if self.val = UInt32($41EE) then Result := 'DEVICE_CONTROLLED_TERMINATION_CAPABILITIES_ARM' else
if self.val = UInt32($4230) then Result := 'DEVICE_CXX_FOR_OPENCL_NUMERIC_VERSION_EXT' else
if self.val = UInt32($4250) then Result := 'DEVICE_IP_VERSION_INTEL' else
if self.val = UInt32($4251) then Result := 'DEVICE_ID_INTEL' else
if self.val = UInt32($4252) then Result := 'DEVICE_NUM_SLICES_INTEL' else
if self.val = UInt32($4253) then Result := 'DEVICE_NUM_SUB_SLICES_PER_SLICE_INTEL' else
if self.val = UInt32($4254) then Result := 'DEVICE_NUM_EUS_PER_SUB_SLICE_INTEL' else
if self.val = UInt32($4255) then Result := 'DEVICE_NUM_THREADS_PER_EU_INTEL' else
if self.val = UInt32($4256) then Result := 'DEVICE_FEATURE_CAPABILITIES_INTEL' else
Result := $'DeviceInfo[{self.val}]';
end;
@ -2093,6 +2111,8 @@ type
public static property MEM_HOST_NO_ACCESS: MemFlags read new MemFlags($0200);
public static property MEM_KERNEL_READ_AND_WRITE: MemFlags read new MemFlags($1000);
public static property MEM_FORCE_HOST_MEMORY_INTEL: MemFlags read new MemFlags($100000);
public static property MEM_RESERVED21_INTEL: MemFlags read new MemFlags($200000);
public static property MEM_RESERVED22_INTEL: MemFlags read new MemFlags($400000);
public static property MEM_NO_ACCESS_INTEL: MemFlags read new MemFlags($1000000);
public static property MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL: MemFlags read new MemFlags($2000000);
public static property MEM_USE_UNCACHED_CPU_MEMORY_IMG: MemFlags read new MemFlags($4000000);
@ -2104,6 +2124,10 @@ type
public static property MEM_RESERVED2_ARM: MemFlags read new MemFlags($400000000);
public static property MEM_RESERVED3_ARM: MemFlags read new MemFlags($800000000);
public static property MEM_RESERVED4_ARM: MemFlags read new MemFlags($1000000000);
public static property MEM_RESERVED0_QCOM: MemFlags read new MemFlags($2000000000);
public static property MEM_RESERVED1_QCOM: MemFlags read new MemFlags($4000000000);
public static property MEM_RESERVED2_QCOM: MemFlags read new MemFlags($8000000000);
public static property MEM_RESERVED3_QCOM: MemFlags read new MemFlags($10000000000);
public static function operator+(f1,f2: MemFlags) := new MemFlags(f1.val or f2.val);
public static function operator or(f1,f2: MemFlags) := f1+f2;
@ -2119,6 +2143,8 @@ type
public property HAS_FLAG_MEM_HOST_NO_ACCESS: boolean read self.val and $0200 <> 0;
public property HAS_FLAG_MEM_KERNEL_READ_AND_WRITE: boolean read self.val and $1000 <> 0;
public property HAS_FLAG_MEM_FORCE_HOST_MEMORY_INTEL: boolean read self.val and $100000 <> 0;
public property HAS_FLAG_MEM_RESERVED21_INTEL: boolean read self.val and $200000 <> 0;
public property HAS_FLAG_MEM_RESERVED22_INTEL: boolean read self.val and $400000 <> 0;
public property HAS_FLAG_MEM_NO_ACCESS_INTEL: boolean read self.val and $1000000 <> 0;
public property HAS_FLAG_MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL: boolean read self.val and $2000000 <> 0;
public property HAS_FLAG_MEM_USE_UNCACHED_CPU_MEMORY_IMG: boolean read self.val and $4000000 <> 0;
@ -2130,6 +2156,10 @@ type
public property HAS_FLAG_MEM_RESERVED2_ARM: boolean read self.val and $400000000 <> 0;
public property HAS_FLAG_MEM_RESERVED3_ARM: boolean read self.val and $800000000 <> 0;
public property HAS_FLAG_MEM_RESERVED4_ARM: boolean read self.val and $1000000000 <> 0;
public property HAS_FLAG_MEM_RESERVED0_QCOM: boolean read self.val and $2000000000 <> 0;
public property HAS_FLAG_MEM_RESERVED1_QCOM: boolean read self.val and $4000000000 <> 0;
public property HAS_FLAG_MEM_RESERVED2_QCOM: boolean read self.val and $8000000000 <> 0;
public property HAS_FLAG_MEM_RESERVED3_QCOM: boolean read self.val and $10000000000 <> 0;
public function ToString: string; override;
begin
@ -2145,6 +2175,8 @@ type
if self.val and UInt64($0200) = UInt64($0200) then res += 'MEM_HOST_NO_ACCESS+';
if self.val and UInt64($1000) = UInt64($1000) then res += 'MEM_KERNEL_READ_AND_WRITE+';
if self.val and UInt64($100000) = UInt64($100000) then res += 'MEM_FORCE_HOST_MEMORY_INTEL+';
if self.val and UInt64($200000) = UInt64($200000) then res += 'MEM_RESERVED21_INTEL+';
if self.val and UInt64($400000) = UInt64($400000) then res += 'MEM_RESERVED22_INTEL+';
if self.val and UInt64($1000000) = UInt64($1000000) then res += 'MEM_NO_ACCESS_INTEL+';
if self.val and UInt64($2000000) = UInt64($2000000) then res += 'MEM_ACCESS_FLAGS_UNRESTRICTED_INTEL+';
if self.val and UInt64($4000000) = UInt64($4000000) then res += 'MEM_USE_UNCACHED_CPU_MEMORY_IMG+';
@ -2156,6 +2188,10 @@ type
if self.val and UInt64($400000000) = UInt64($400000000) then res += 'MEM_RESERVED2_ARM+';
if self.val and UInt64($800000000) = UInt64($800000000) then res += 'MEM_RESERVED3_ARM+';
if self.val and UInt64($1000000000) = UInt64($1000000000) then res += 'MEM_RESERVED4_ARM+';
if self.val and UInt64($2000000000) = UInt64($2000000000) then res += 'MEM_RESERVED0_QCOM+';
if self.val and UInt64($4000000000) = UInt64($4000000000) then res += 'MEM_RESERVED1_QCOM+';
if self.val and UInt64($8000000000) = UInt64($8000000000) then res += 'MEM_RESERVED2_QCOM+';
if self.val and UInt64($10000000000) = UInt64($10000000000) then res += 'MEM_RESERVED3_QCOM+';
if res.Length<>0 then
begin
res.Length -= 1;
@ -14513,6 +14549,18 @@ type
end;
[PCUNotRestore]
[System.Security.SuppressUnmanagedCodeSecurity]
clPoclContentSize = static class
public const _ExtStr = 'pocl_content_size';
private static function z_SetContentSizeBufferPoCL_ovr_0(buffer: cl_mem; content_size_buffer: cl_mem): ErrorCode;
external 'opencl.dll' name 'clSetContentSizeBufferPoCL';
public [MethodImpl(MethodImplOptions.AggressiveInlining)] static function SetContentSizeBufferPoCL(buffer: cl_mem; content_size_buffer: cl_mem): ErrorCode :=
z_SetContentSizeBufferPoCL_ovr_0(buffer, content_size_buffer);
end;
{$endregion Extensions}
{$endregion Функции}

View file

@ -32,12 +32,6 @@ unit OpenCLABC;
//===================================
// Запланированное:
//ToDo В описаниях в куче мест упоминаются буферы, которые вообще то теперь MemorySegment
//ToDo q*4 - Повторение очереди 4 раза
// - Всегда можно использовать Combine(ArrFill(4,q))
// - Но тогда внутри будет хранится массив - это лишнее, если все очереди одинаковые
//ToDo Порядок Wait очередей в Wait группах
// - Проверить сочетание с каждой другой фичей
@ -78,7 +72,7 @@ unit OpenCLABC;
//ToDo Проверять ".IsReadOnly" перед запасным копированием коллекций
//ToDo В методах вроде .AddWriteArray1 приходится добавлять &<>
//ToDo В методах вроде MemorySegment.AddWriteArray1 приходится добавлять &<>
//ToDo Подумать как об этом можно написать в справке (или не в справке):
// - ReadValue отсутствует
@ -157,7 +151,6 @@ unit OpenCLABC;
//ToDo https://github.com/pascalabcnet/pascalabcnet/issues/{id}
// - #2221
// - #2431
// - #2510
//ToDo Баги NVidia
//ToDo https://developer.nvidia.com/nvidia_bug/{id}
@ -670,7 +663,7 @@ type
public property AllDevices: IList<Device> read dvcs;
private main_dvc: Device;
///Возвращает главное устройство контекста, на котором выделяется память под буферы и внутренние объекты очередей
///Возвращает главное устройство контекста, на котором выделяется память
public property MainDevice: Device read main_dvc;
private function GetAllNtvDevices: array of cl_device_id;
@ -1272,116 +1265,116 @@ type
{$region 1#Write&Read}
///Заполняет весь буфер данными, находящимися по указанному адресу в RAM
///Заполняет всю область памяти данными, находящимися по указанному адресу в RAM
public function WriteData(ptr: CommandQueue<IntPtr>): MemorySegment;
///Копирует всё содержимое буфера в RAM, по указанному адресу
///Читает всё содержимое области памяти в RAM, по указанному адресу
public function ReadData(ptr: CommandQueue<IntPtr>): MemorySegment;
///Заполняет часть буфер данными, находящимися по указанному адресу в RAM
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти данными, находящимися по указанному адресу в RAM
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function WriteData(ptr: CommandQueue<IntPtr>; mem_offset, len: CommandQueue<integer>): MemorySegment;
///Копирует часть содержимого буфера в RAM, по указанному адресу
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Читает часть содержимого области памяти в RAM, по указанному адресу
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function ReadData(ptr: CommandQueue<IntPtr>; mem_offset, len: CommandQueue<integer>): MemorySegment;
///Заполняет весь буфер данными, находящимися по указанному адресу в RAM
///Заполняет всю область памяти данными, находящимися по указанному адресу в RAM
public function WriteData(ptr: pointer): MemorySegment;
///Копирует всё содержимое буфера в RAM, по указанному адресу
///Читает всё содержимое области памяти в RAM, по указанному адресу
public function ReadData(ptr: pointer): MemorySegment;
///Заполняет часть буфер данными, находящимися по указанному адресу в RAM
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти данными, находящимися по указанному адресу в RAM
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function WriteData(ptr: pointer; mem_offset, len: CommandQueue<integer>): MemorySegment;
///Копирует часть содержимого буфера в RAM, по указанному адресу
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Читает часть содержимого области памяти в RAM, по указанному адресу
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function ReadData(ptr: pointer; mem_offset, len: CommandQueue<integer>): MemorySegment;
///Записывает указанное значение размерного типа в начало буфера
///Записывает указанное значение размерного типа в начало области памяти
public function WriteValue<TRecord>(val: TRecord): MemorySegment; where TRecord: record;
///Записывает указанное значение размерного типа в буфер
///buff_offset указывает отступ от начала буфера, в байтах
///Записывает указанное значение размерного типа в области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
public function WriteValue<TRecord>(val: TRecord; mem_offset: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Записывает указанное значение размерного типа в начало буфера
///Записывает указанное значение размерного типа в начало области памяти
public function WriteValue<TRecord>(val: CommandQueue<TRecord>): MemorySegment; where TRecord: record;
///Записывает указанное значение размерного типа в буфер
///buff_offset указывает отступ от начала буфера, в байтах
///Записывает указанное значение размерного типа в области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
public function WriteValue<TRecord>(val: CommandQueue<TRecord>; mem_offset: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Записывает весь массив в начало буфера
///Записывает весь массив в начало области памяти
public function WriteArray1<TRecord>(a: CommandQueue<array of TRecord>): MemorySegment; where TRecord: record;
///Записывает весь массив в начало буфера
///Записывает весь массив в начало области памяти
public function WriteArray2<TRecord>(a: CommandQueue<array[,] of TRecord>): MemorySegment; where TRecord: record;
///Записывает весь массив в начало буфера
///Записывает весь массив в начало области памяти
public function WriteArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>): MemorySegment; where TRecord: record;
///Читает из буфера достаточно байт чтоб заполнить весь массив
///Читает из области памяти достаточно байт чтоб заполнить весь массив
public function ReadArray1<TRecord>(a: CommandQueue<array of TRecord>): MemorySegment; where TRecord: record;
///Читает из буфера достаточно байт чтоб заполнить весь массив
///Читает из области памяти достаточно байт чтоб заполнить весь массив
public function ReadArray2<TRecord>(a: CommandQueue<array[,] of TRecord>): MemorySegment; where TRecord: record;
///Читает из буфера достаточно байт чтоб заполнить весь массив
///Читает из области памяти достаточно байт чтоб заполнить весь массив
public function ReadArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>): MemorySegment; where TRecord: record;
///Записывает указанный участок массива в буфер
///Записывает указанный участок массива в область памяти
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
public function WriteArray1<TRecord>(a: CommandQueue<array of TRecord>; a_offset, len, mem_offset: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Записывает указанный участок массива в буфер
///Записывает указанный участок массива в область памяти
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
///прочитает элементы [0,1], [0,2], [1,0], [1,1]. Для чтения частей из нескольких строк массива - делайте несколько операций чтения, по 1 на строку
public function WriteArray2<TRecord>(a: CommandQueue<array[,] of TRecord>; a_offset1,a_offset2, len, mem_offset: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Записывает указанный участок массива в буфер
///Записывает указанный участок массива в область памяти
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
///прочитает элементы [0,1], [0,2], [1,0], [1,1]. Для чтения частей из нескольких строк массива - делайте несколько операций чтения, по 1 на строку
public function WriteArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>; a_offset1,a_offset2,a_offset3, len, mem_offset: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Читает в буфер указанный участок массива
///Читает данные из области памяти в указанный участок массива
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
public function ReadArray1<TRecord>(a: CommandQueue<array of TRecord>; a_offset, len, mem_offset: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Читает в буфер указанный участок массива
///Читает данные из области памяти в указанный участок массива
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
///прочитает элементы [0,1], [0,2], [1,0], [1,1]. Для чтения частей из нескольких строк массива - делайте несколько операций чтения, по 1 на строку
public function ReadArray2<TRecord>(a: CommandQueue<array[,] of TRecord>; a_offset1,a_offset2, len, mem_offset: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Читает в буфер указанный участок массива
///Читает данные из области памяти в указанный участок массива
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
@ -1392,51 +1385,51 @@ type
{$region 2#Fill}
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями весь буфер
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями всю область памяти
public function FillData(ptr: CommandQueue<IntPtr>; pattern_len: CommandQueue<integer>): MemorySegment;
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями часть буфера
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями часть области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function FillData(ptr: CommandQueue<IntPtr>; pattern_len, mem_offset, len: CommandQueue<integer>): MemorySegment;
///Заполняет весь буфер копиями указанного значения размерного типа
///Заполняет всю область памяти копиями указанного значения размерного типа
public function FillValue<TRecord>(val: TRecord): MemorySegment; where TRecord: record;
///Заполняет часть буфера копиями указанного значения размерного типа
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти копиями указанного значения размерного типа
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function FillValue<TRecord>(val: TRecord; mem_offset, len: CommandQueue<integer>): MemorySegment; where TRecord: record;
///Заполняет весь буфер копиями указанного значения размерного типа
///Заполняет всю область памяти копиями указанного значения размерного типа
public function FillValue<TRecord>(val: CommandQueue<TRecord>): MemorySegment; where TRecord: record;
///Заполняет часть буфера копиями указанного значения размерного типа
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти копиями указанного значения размерного типа
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function FillValue<TRecord>(val: CommandQueue<TRecord>; mem_offset, len: CommandQueue<integer>): MemorySegment; where TRecord: record;
{$endregion 2#Fill}
{$region 3#Copy}
///Копирует данные из текущего буфера в b
///Если буферы имеют разный размер - в качестве объёма данных берётся размер меньшего буфера
///Копирует данные из текущей области памяти в mem
///Если области памяти имеют разный размер - в качестве объёма данных берётся размер меньшей области
public function CopyTo(mem: CommandQueue<MemorySegment>): MemorySegment;
///Копирует данные из b в текущий буфер
///Если буферы имеют разный размер - в качестве объёма данных берётся размер меньшего буфера
///Копирует данные из mem в текущюу область памяти
///Если области памяти имеют разный размер - в качестве объёма данных берётся размер меньшей области
public function CopyFrom(mem: CommandQueue<MemorySegment>): MemorySegment;
///Копирует данные из текущего буфера в b
///from_pos указывает отступ в байтах от начала буфера, из которого копируют
///to_pos указывает отступ в байтах от начала буфера, в который копируют
///Копирует данные из текущей области памяти в mem
///from_pos указывает отступ в байтах от начала области памяти, из которой копируют
///to_pos указывает отступ в байтах от начала области памяти, в которую копируют
///len указывает кол-во копируемых байт
public function CopyTo(mem: CommandQueue<MemorySegment>; from_pos, to_pos, len: CommandQueue<integer>): MemorySegment;
///Копирует данные из b в текущий буфер
///from_pos указывает отступ в байтах от начала буфера, из которого копируют
///to_pos указывает отступ в байтах от начала буфера, в который копируют
///Копирует данные из mem в текущюу область памяти
///from_pos указывает отступ в байтах от начала области памяти, из которой копируют
///to_pos указывает отступ в байтах от начала области памяти, в которую копируют
///len указывает кол-во копируемых байт
public function CopyFrom(mem: CommandQueue<MemorySegment>; from_pos, to_pos, len: CommandQueue<integer>): MemorySegment;
@ -1444,31 +1437,31 @@ type
{$region Get}
///Выделяет область неуправляемой памяти и копирует в неё всё содержимое данного буфера
///Выделяет область неуправляемой памяти и копирует в неё всё содержимое данной области памяти
public function GetData: IntPtr;
///Выделяет область неуправляемой памяти и копирует в неё часть содержимого данного буфера
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Выделяет область неуправляемой памяти и копирует в неё часть содержимого данной области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function GetData(mem_offset, len: CommandQueue<integer>): IntPtr;
///Читает значение указанного размерного типа из начала буфера
///Читает значение указанного размерного типа из начала области памяти
public function GetValue<TRecord>: TRecord; where TRecord: record;
///Читает значение указанного размерного типа из буфера
///buff_offset указывает отступ от начала буфера, в байтах
///Читает значение указанного размерного типа из области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
public function GetValue<TRecord>(mem_offset: CommandQueue<integer>): TRecord; where TRecord: record;
///Создаёт массив максимального размера (на сколько хватит байт буфера) и копирует в него содержимое буфера
///Читает массив максимального размера, на сколько хватит байт данной области памяти
public function GetArray1<TRecord>: array of TRecord; where TRecord: record;
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое буфера
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое данный области памяти
public function GetArray1<TRecord>(len: CommandQueue<integer>): array of TRecord; where TRecord: record;
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое буфера
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое данный области памяти
public function GetArray2<TRecord>(len1,len2: CommandQueue<integer>): array[,] of TRecord; where TRecord: record;
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое буфера
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое данный области памяти
public function GetArray3<TRecord>(len1,len2,len3: CommandQueue<integer>): array[,,] of TRecord; where TRecord: record;
{$endregion Get}
@ -2762,116 +2755,116 @@ type
{$region 1#Write&Read}
///Заполняет весь буфер данными, находящимися по указанному адресу в RAM
///Заполняет всю область памяти данными, находящимися по указанному адресу в RAM
public function AddWriteData(ptr: CommandQueue<IntPtr>): MemorySegmentCCQ;
///Копирует всё содержимое буфера в RAM, по указанному адресу
///Читает всё содержимое области памяти в RAM, по указанному адресу
public function AddReadData(ptr: CommandQueue<IntPtr>): MemorySegmentCCQ;
///Заполняет часть буфер данными, находящимися по указанному адресу в RAM
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти данными, находящимися по указанному адресу в RAM
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddWriteData(ptr: CommandQueue<IntPtr>; mem_offset, len: CommandQueue<integer>): MemorySegmentCCQ;
///Копирует часть содержимого буфера в RAM, по указанному адресу
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Читает часть содержимого области памяти в RAM, по указанному адресу
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddReadData(ptr: CommandQueue<IntPtr>; mem_offset, len: CommandQueue<integer>): MemorySegmentCCQ;
///Заполняет весь буфер данными, находящимися по указанному адресу в RAM
///Заполняет всю область памяти данными, находящимися по указанному адресу в RAM
public function AddWriteData(ptr: pointer): MemorySegmentCCQ;
///Копирует всё содержимое буфера в RAM, по указанному адресу
///Читает всё содержимое области памяти в RAM, по указанному адресу
public function AddReadData(ptr: pointer): MemorySegmentCCQ;
///Заполняет часть буфер данными, находящимися по указанному адресу в RAM
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти данными, находящимися по указанному адресу в RAM
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddWriteData(ptr: pointer; mem_offset, len: CommandQueue<integer>): MemorySegmentCCQ;
///Копирует часть содержимого буфера в RAM, по указанному адресу
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Читает часть содержимого области памяти в RAM, по указанному адресу
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddReadData(ptr: pointer; mem_offset, len: CommandQueue<integer>): MemorySegmentCCQ;
///Записывает указанное значение размерного типа в начало буфера
///Записывает указанное значение размерного типа в начало области памяти
public function AddWriteValue<TRecord>(val: TRecord): MemorySegmentCCQ; where TRecord: record;
///Записывает указанное значение размерного типа в буфер
///buff_offset указывает отступ от начала буфера, в байтах
///Записывает указанное значение размерного типа в области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
public function AddWriteValue<TRecord>(val: TRecord; mem_offset: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Записывает указанное значение размерного типа в начало буфера
///Записывает указанное значение размерного типа в начало области памяти
public function AddWriteValue<TRecord>(val: CommandQueue<TRecord>): MemorySegmentCCQ; where TRecord: record;
///Записывает указанное значение размерного типа в буфер
///buff_offset указывает отступ от начала буфера, в байтах
///Записывает указанное значение размерного типа в области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
public function AddWriteValue<TRecord>(val: CommandQueue<TRecord>; mem_offset: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Записывает весь массив в начало буфера
///Записывает весь массив в начало области памяти
public function AddWriteArray1<TRecord>(a: CommandQueue<array of TRecord>): MemorySegmentCCQ; where TRecord: record;
///Записывает весь массив в начало буфера
///Записывает весь массив в начало области памяти
public function AddWriteArray2<TRecord>(a: CommandQueue<array[,] of TRecord>): MemorySegmentCCQ; where TRecord: record;
///Записывает весь массив в начало буфера
///Записывает весь массив в начало области памяти
public function AddWriteArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>): MemorySegmentCCQ; where TRecord: record;
///Читает из буфера достаточно байт чтоб заполнить весь массив
///Читает из области памяти достаточно байт чтоб заполнить весь массив
public function AddReadArray1<TRecord>(a: CommandQueue<array of TRecord>): MemorySegmentCCQ; where TRecord: record;
///Читает из буфера достаточно байт чтоб заполнить весь массив
///Читает из области памяти достаточно байт чтоб заполнить весь массив
public function AddReadArray2<TRecord>(a: CommandQueue<array[,] of TRecord>): MemorySegmentCCQ; where TRecord: record;
///Читает из буфера достаточно байт чтоб заполнить весь массив
///Читает из области памяти достаточно байт чтоб заполнить весь массив
public function AddReadArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>): MemorySegmentCCQ; where TRecord: record;
///Записывает указанный участок массива в буфер
///Записывает указанный участок массива в область памяти
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
public function AddWriteArray1<TRecord>(a: CommandQueue<array of TRecord>; a_offset, len, mem_offset: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Записывает указанный участок массива в буфер
///Записывает указанный участок массива в область памяти
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
///прочитает элементы [0,1], [0,2], [1,0], [1,1]. Для чтения частей из нескольких строк массива - делайте несколько операций чтения, по 1 на строку
public function AddWriteArray2<TRecord>(a: CommandQueue<array[,] of TRecord>; a_offset1,a_offset2, len, mem_offset: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Записывает указанный участок массива в буфер
///Записывает указанный участок массива в область памяти
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
///прочитает элементы [0,1], [0,2], [1,0], [1,1]. Для чтения частей из нескольких строк массива - делайте несколько операций чтения, по 1 на строку
public function AddWriteArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>; a_offset1,a_offset2,a_offset3, len, mem_offset: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Читает в буфер указанный участок массива
///Читает данные из области памяти в указанный участок массива
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
public function AddReadArray1<TRecord>(a: CommandQueue<array of TRecord>; a_offset, len, mem_offset: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Читает в буфер указанный участок массива
///Читает данные из области памяти в указанный участок массива
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
///прочитает элементы [0,1], [0,2], [1,0], [1,1]. Для чтения частей из нескольких строк массива - делайте несколько операций чтения, по 1 на строку
public function AddReadArray2<TRecord>(a: CommandQueue<array[,] of TRecord>; a_offset1,a_offset2, len, mem_offset: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Читает в буфер указанный участок массива
///Читает данные из области памяти в указанный участок массива
///a_offset(-ы) указывают индекс в массиве
///len указывает кол-во задействованных элементов массива
///buff_offset указывает отступ от начала буфера, в байтах
///mem_offset указывает отступ от начала области памяти, в байтах
///
///ВНИМАНИЕ! У многомерных массивов элементы распологаются так же как у одномерных, разделение на строки виртуально
///Это значит что, к примеру, чтение 4 элементов 2-х мерного массива начиная с индекса [0,1]
@ -2882,51 +2875,51 @@ type
{$region 2#Fill}
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями весь буфер
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями всю область памяти
public function AddFillData(ptr: CommandQueue<IntPtr>; pattern_len: CommandQueue<integer>): MemorySegmentCCQ;
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями часть буфера
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Читает pattern_len байт из RAM по указанному адресу и заполняет их копиями часть области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddFillData(ptr: CommandQueue<IntPtr>; pattern_len, mem_offset, len: CommandQueue<integer>): MemorySegmentCCQ;
///Заполняет весь буфер копиями указанного значения размерного типа
///Заполняет всю область памяти копиями указанного значения размерного типа
public function AddFillValue<TRecord>(val: TRecord): MemorySegmentCCQ; where TRecord: record;
///Заполняет часть буфера копиями указанного значения размерного типа
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти копиями указанного значения размерного типа
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddFillValue<TRecord>(val: TRecord; mem_offset, len: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
///Заполняет весь буфер копиями указанного значения размерного типа
///Заполняет всю область памяти копиями указанного значения размерного типа
public function AddFillValue<TRecord>(val: CommandQueue<TRecord>): MemorySegmentCCQ; where TRecord: record;
///Заполняет часть буфера копиями указанного значения размерного типа
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Заполняет часть области памяти копиями указанного значения размерного типа
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddFillValue<TRecord>(val: CommandQueue<TRecord>; mem_offset, len: CommandQueue<integer>): MemorySegmentCCQ; where TRecord: record;
{$endregion 2#Fill}
{$region 3#Copy}
///Копирует данные из текущего буфера в b
///Если буферы имеют разный размер - в качестве объёма данных берётся размер меньшего буфера
///Копирует данные из текущей области памяти в mem
///Если области памяти имеют разный размер - в качестве объёма данных берётся размер меньшей области
public function AddCopyTo(mem: CommandQueue<MemorySegment>): MemorySegmentCCQ;
///Копирует данные из b в текущий буфер
///Если буферы имеют разный размер - в качестве объёма данных берётся размер меньшего буфера
///Копирует данные из mem в текущюу область памяти
///Если области памяти имеют разный размер - в качестве объёма данных берётся размер меньшей области
public function AddCopyFrom(mem: CommandQueue<MemorySegment>): MemorySegmentCCQ;
///Копирует данные из текущего буфера в b
///from_pos указывает отступ в байтах от начала буфера, из которого копируют
///to_pos указывает отступ в байтах от начала буфера, в который копируют
///Копирует данные из текущей области памяти в mem
///from_pos указывает отступ в байтах от начала области памяти, из которой копируют
///to_pos указывает отступ в байтах от начала области памяти, в которую копируют
///len указывает кол-во копируемых байт
public function AddCopyTo(mem: CommandQueue<MemorySegment>; from_pos, to_pos, len: CommandQueue<integer>): MemorySegmentCCQ;
///Копирует данные из b в текущий буфер
///from_pos указывает отступ в байтах от начала буфера, из которого копируют
///to_pos указывает отступ в байтах от начала буфера, в который копируют
///Копирует данные из mem в текущюу область памяти
///from_pos указывает отступ в байтах от начала области памяти, из которой копируют
///to_pos указывает отступ в байтах от начала области памяти, в которую копируют
///len указывает кол-во копируемых байт
public function AddCopyFrom(mem: CommandQueue<MemorySegment>; from_pos, to_pos, len: CommandQueue<integer>): MemorySegmentCCQ;
@ -2934,31 +2927,31 @@ type
{$region Get}
///Выделяет область неуправляемой памяти и копирует в неё всё содержимое данного буфера
///Выделяет область неуправляемой памяти и копирует в неё всё содержимое данной области памяти
public function AddGetData: CommandQueue<IntPtr>;
///Выделяет область неуправляемой памяти и копирует в неё часть содержимого данного буфера
///buff_offset указывает отступ от начала буфера, в байтах
///len указывает кол-во задействованных байт буфера
///Выделяет область неуправляемой памяти и копирует в неё часть содержимого данной области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
///len указывает кол-во задействованных в операции байт
public function AddGetData(mem_offset, len: CommandQueue<integer>): CommandQueue<IntPtr>;
///Читает значение указанного размерного типа из начала буфера
///Читает значение указанного размерного типа из начала области памяти
public function AddGetValue<TRecord>: CommandQueue<TRecord>; where TRecord: record;
///Читает значение указанного размерного типа из буфера
///buff_offset указывает отступ от начала буфера, в байтах
///Читает значение указанного размерного типа из области памяти
///mem_offset указывает отступ от начала области памяти, в байтах
public function AddGetValue<TRecord>(mem_offset: CommandQueue<integer>): CommandQueue<TRecord>; where TRecord: record;
///Создаёт массив максимального размера (на сколько хватит байт буфера) и копирует в него содержимое буфера
///Читает массив максимального размера, на сколько хватит байт данной области памяти
public function AddGetArray1<TRecord>: CommandQueue<array of TRecord>; where TRecord: record;
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое буфера
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое данный области памяти
public function AddGetArray1<TRecord>(len: CommandQueue<integer>): CommandQueue<array of TRecord>; where TRecord: record;
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое буфера
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое данный области памяти
public function AddGetArray2<TRecord>(len1,len2: CommandQueue<integer>): CommandQueue<array[,] of TRecord>; where TRecord: record;
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое буфера
///Создаёт массив с указанным кол-вом элементов и копирует в него содержимое данный области памяти
public function AddGetArray3<TRecord>(len1,len2,len3: CommandQueue<integer>): CommandQueue<array[,,] of TRecord>; where TRecord: record;
{$endregion Get}
@ -6935,20 +6928,16 @@ type
{$region 1#Exec}
function Kernel.Exec1(sz1: CommandQueue<integer>; params args: array of KernelArg): Kernel :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddExec1(sz1, args) as object as CommandQueue<Kernel>);
Context.Default.SyncInvoke(self.NewQueue.AddExec1(sz1, args));
function Kernel.Exec2(sz1,sz2: CommandQueue<integer>; params args: array of KernelArg): Kernel :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddExec2(sz1, sz2, args) as object as CommandQueue<Kernel>);
Context.Default.SyncInvoke(self.NewQueue.AddExec2(sz1, sz2, args));
function Kernel.Exec3(sz1,sz2,sz3: CommandQueue<integer>; params args: array of KernelArg): Kernel :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddExec3(sz1, sz2, sz3, args) as object as CommandQueue<Kernel>);
Context.Default.SyncInvoke(self.NewQueue.AddExec3(sz1, sz2, sz3, args));
function Kernel.Exec(global_work_offset, global_work_size, local_work_size: CommandQueue<array of UIntPtr>; params args: array of KernelArg): Kernel :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddExec(global_work_offset, global_work_size, local_work_size, args) as object as CommandQueue<Kernel>);
Context.Default.SyncInvoke(self.NewQueue.AddExec(global_work_offset, global_work_size, local_work_size, args));
{$endregion 1#Exec}
@ -6998,7 +6987,7 @@ type
new UIntPtr[](new UIntPtr(sz1)),
nil,
evs.count, evs.evs, res_ev
);
).RaiseIfError;
cl.RetainKernel(ntv).RaiseIfError;
var args_hnd := GCHandle.Alloc(args);
@ -7091,7 +7080,7 @@ type
new UIntPtr[](new UIntPtr(sz1),new UIntPtr(sz2)),
nil,
evs.count, evs.evs, res_ev
);
).RaiseIfError;
cl.RetainKernel(ntv).RaiseIfError;
var args_hnd := GCHandle.Alloc(args);
@ -7193,7 +7182,7 @@ type
new UIntPtr[](new UIntPtr(sz1),new UIntPtr(sz2),new UIntPtr(sz3)),
nil,
evs.count, evs.evs, res_ev
);
).RaiseIfError;
cl.RetainKernel(ntv).RaiseIfError;
var args_hnd := GCHandle.Alloc(args);
@ -7300,7 +7289,7 @@ type
global_work_size,
local_work_size,
evs.count, evs.evs, res_ev
);
).RaiseIfError;
cl.RetainKernel(ntv).RaiseIfError;
var args_hnd := GCHandle.Alloc(args);
@ -7372,20 +7361,16 @@ AddCommand(self, new KernelCommandExec(global_work_offset, global_work_size, loc
{$region 1#Write&Read}
function MemorySegment.WriteData(ptr: CommandQueue<IntPtr>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteData(ptr) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteData(ptr));
function MemorySegment.ReadData(ptr: CommandQueue<IntPtr>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadData(ptr) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadData(ptr));
function MemorySegment.WriteData(ptr: CommandQueue<IntPtr>; mem_offset, len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteData(ptr, mem_offset, len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteData(ptr, mem_offset, len));
function MemorySegment.ReadData(ptr: CommandQueue<IntPtr>; mem_offset, len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadData(ptr, mem_offset, len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadData(ptr, mem_offset, len));
function MemorySegment.WriteData(ptr: pointer): MemorySegment :=
WriteData(IntPtr(ptr));
@ -7403,146 +7388,115 @@ function MemorySegment.WriteValue<TRecord>(val: TRecord): MemorySegment :=
WriteValue(val, 0);
function MemorySegment.WriteValue<TRecord>(val: TRecord; mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteValue&<TRecord>(val, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteValue&<TRecord>(val, mem_offset));
function MemorySegment.WriteValue<TRecord>(val: CommandQueue<TRecord>): MemorySegment :=
WriteValue(val, 0);
function MemorySegment.WriteValue<TRecord>(val: CommandQueue<TRecord>; mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteValue&<TRecord>(val, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteValue&<TRecord>(val, mem_offset));
function MemorySegment.WriteArray1<TRecord>(a: CommandQueue<array of TRecord>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray1&<TRecord>(a) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray1&<TRecord>(a));
function MemorySegment.WriteArray2<TRecord>(a: CommandQueue<array[,] of TRecord>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray2&<TRecord>(a) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray2&<TRecord>(a));
function MemorySegment.WriteArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray3&<TRecord>(a) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray3&<TRecord>(a));
function MemorySegment.ReadArray1<TRecord>(a: CommandQueue<array of TRecord>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray1&<TRecord>(a) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray1&<TRecord>(a));
function MemorySegment.ReadArray2<TRecord>(a: CommandQueue<array[,] of TRecord>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray2&<TRecord>(a) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray2&<TRecord>(a));
function MemorySegment.ReadArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray3&<TRecord>(a) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray3&<TRecord>(a));
function MemorySegment.WriteArray1<TRecord>(a: CommandQueue<array of TRecord>; a_offset, len, mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray1&<TRecord>(a, a_offset, len, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray1&<TRecord>(a, a_offset, len, mem_offset));
function MemorySegment.WriteArray2<TRecord>(a: CommandQueue<array[,] of TRecord>; a_offset1,a_offset2, len, mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray2&<TRecord>(a, a_offset1, a_offset2, len, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray2&<TRecord>(a, a_offset1, a_offset2, len, mem_offset));
function MemorySegment.WriteArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>; a_offset1,a_offset2,a_offset3, len, mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray3&<TRecord>(a, a_offset1, a_offset2, a_offset3, len, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray3&<TRecord>(a, a_offset1, a_offset2, a_offset3, len, mem_offset));
function MemorySegment.ReadArray1<TRecord>(a: CommandQueue<array of TRecord>; a_offset, len, mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray1&<TRecord>(a, a_offset, len, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray1&<TRecord>(a, a_offset, len, mem_offset));
function MemorySegment.ReadArray2<TRecord>(a: CommandQueue<array[,] of TRecord>; a_offset1,a_offset2, len, mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray2&<TRecord>(a, a_offset1, a_offset2, len, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray2&<TRecord>(a, a_offset1, a_offset2, len, mem_offset));
function MemorySegment.ReadArray3<TRecord>(a: CommandQueue<array[,,] of TRecord>; a_offset1,a_offset2,a_offset3, len, mem_offset: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray3&<TRecord>(a, a_offset1, a_offset2, a_offset3, len, mem_offset) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray3&<TRecord>(a, a_offset1, a_offset2, a_offset3, len, mem_offset));
{$endregion 1#Write&Read}
{$region 2#Fill}
function MemorySegment.FillData(ptr: CommandQueue<IntPtr>; pattern_len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFillData(ptr, pattern_len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddFillData(ptr, pattern_len));
function MemorySegment.FillData(ptr: CommandQueue<IntPtr>; pattern_len, mem_offset, len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFillData(ptr, pattern_len, mem_offset, len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddFillData(ptr, pattern_len, mem_offset, len));
function MemorySegment.FillValue<TRecord>(val: TRecord): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val));
function MemorySegment.FillValue<TRecord>(val: TRecord; mem_offset, len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val, mem_offset, len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val, mem_offset, len));
function MemorySegment.FillValue<TRecord>(val: CommandQueue<TRecord>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val));
function MemorySegment.FillValue<TRecord>(val: CommandQueue<TRecord>; mem_offset, len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val, mem_offset, len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddFillValue&<TRecord>(val, mem_offset, len));
{$endregion 2#Fill}
{$region 3#Copy}
function MemorySegment.CopyTo(mem: CommandQueue<MemorySegment>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(mem) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(mem));
function MemorySegment.CopyFrom(mem: CommandQueue<MemorySegment>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(mem) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(mem));
function MemorySegment.CopyTo(mem: CommandQueue<MemorySegment>; from_pos, to_pos, len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(mem, from_pos, to_pos, len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(mem, from_pos, to_pos, len));
function MemorySegment.CopyFrom(mem: CommandQueue<MemorySegment>; from_pos, to_pos, len: CommandQueue<integer>): MemorySegment :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(mem, from_pos, to_pos, len) as object as CommandQueue<MemorySegment>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(mem, from_pos, to_pos, len));
{$endregion 3#Copy}
{$region Get}
function MemorySegment.GetData: IntPtr :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetData as object as CommandQueue<IntPtr>);
Context.Default.SyncInvoke(self.NewQueue.AddGetData);
function MemorySegment.GetData(mem_offset, len: CommandQueue<integer>): IntPtr :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetData(mem_offset, len) as object as CommandQueue<IntPtr>);
Context.Default.SyncInvoke(self.NewQueue.AddGetData(mem_offset, len));
function MemorySegment.GetValue<TRecord>: TRecord :=
GetValue&<TRecord>(0);
function MemorySegment.GetValue<TRecord>(mem_offset: CommandQueue<integer>): TRecord :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetValue&<TRecord>(mem_offset) as object as CommandQueue<TRecord>);
Context.Default.SyncInvoke(self.NewQueue.AddGetValue&<TRecord>(mem_offset));
function MemorySegment.GetArray1<TRecord>: array of TRecord :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetArray1&<TRecord> as object as CommandQueue<array of TRecord>);
Context.Default.SyncInvoke(self.NewQueue.AddGetArray1&<TRecord>);
function MemorySegment.GetArray1<TRecord>(len: CommandQueue<integer>): array of TRecord :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetArray1&<TRecord>(len) as object as CommandQueue<array of TRecord>);
Context.Default.SyncInvoke(self.NewQueue.AddGetArray1&<TRecord>(len));
function MemorySegment.GetArray2<TRecord>(len1,len2: CommandQueue<integer>): array[,] of TRecord :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetArray2&<TRecord>(len1, len2) as object as CommandQueue<array[,] of TRecord>);
Context.Default.SyncInvoke(self.NewQueue.AddGetArray2&<TRecord>(len1, len2));
function MemorySegment.GetArray3<TRecord>(len1,len2,len3: CommandQueue<integer>): array[,,] of TRecord :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetArray3&<TRecord>(len1, len2, len3) as object as CommandQueue<array[,,] of TRecord>);
Context.Default.SyncInvoke(self.NewQueue.AddGetArray3&<TRecord>(len1, len2, len3));
{$endregion Get}
@ -10151,84 +10105,67 @@ new MemorySegmentCommandGetArray3<TRecord>(self, len1, len2, len3) as CommandQue
{$region 1#Write&Read}
function CLArray<T>.WriteItem(val: &T; ind: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteItem(val, ind) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteItem(val, ind));
function CLArray<T>.WriteItem(val: CommandQueue<&T>; ind: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteItem(val, ind) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteItem(val, ind));
function CLArray<T>.WriteArray(a: CommandQueue<array of &T>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray(a) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray(a));
function CLArray<T>.ReadArray(a: CommandQueue<array of &T>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray(a) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray(a));
function CLArray<T>.WriteArray(a: CommandQueue<array of &T>; ind, len, a_ind: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray(a, ind, len, a_ind) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddWriteArray(a, ind, len, a_ind));
function CLArray<T>.ReadArray(a: CommandQueue<array of &T>; ind, len, a_ind: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddReadArray(a, ind, len, a_ind) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddReadArray(a, ind, len, a_ind));
{$endregion 1#Write&Read}
{$region 2#Fill}
function CLArray<T>.Fill(val: &T): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFill(val) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddFill(val));
function CLArray<T>.Fill(val: &T; ind, len: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFill(val, ind, len) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddFill(val, ind, len));
function CLArray<T>.Fill(val: CommandQueue<&T>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFill(val) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddFill(val));
function CLArray<T>.Fill(val: CommandQueue<&T>; ind, len: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddFill(val, ind, len) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddFill(val, ind, len));
{$endregion 2#Fill}
{$region 3#Copy}
function CLArray<T>.CopyTo(a: CommandQueue<CLArray<T>>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(a) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(a));
function CLArray<T>.CopyFrom(a: CommandQueue<CLArray<T>>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(a) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(a));
function CLArray<T>.CopyTo(a: CommandQueue<CLArray<T>>; from_ind, to_ind, len: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(a, from_ind, to_ind, len) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyTo(a, from_ind, to_ind, len));
function CLArray<T>.CopyFrom(a: CommandQueue<CLArray<T>>; from_ind, to_ind, len: CommandQueue<integer>): CLArray<T> :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(a, from_ind, to_ind, len) as object as CommandQueue<CLArray<T>>);
Context.Default.SyncInvoke(self.NewQueue.AddCopyFrom(a, from_ind, to_ind, len));
{$endregion 3#Copy}
{$region Get}
function CLArray<T>.GetItem(ind: CommandQueue<integer>): &T :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetItem(ind) as object as CommandQueue<&T>);
Context.Default.SyncInvoke(self.NewQueue.AddGetItem(ind));
function CLArray<T>.GetArray: array of &T :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetArray as object as CommandQueue<array of &T>);
Context.Default.SyncInvoke(self.NewQueue.AddGetArray);
function CLArray<T>.GetArray(ind, len: CommandQueue<integer>): array of &T :=
//ToDo #2510
Context.Default.SyncInvoke(self.NewQueue.AddGetArray(ind, len) as object as CommandQueue<array of &T>);
Context.Default.SyncInvoke(self.NewQueue.AddGetArray(ind, len));
{$endregion Get}

View file

@ -134,7 +134,21 @@ procedure TrueTablePrint(a: array[,] of boolean; f: integer := 2; s: string := '
/// Заменяет последнее вхождение подстроки в строку
procedure ReplaceLast(var Строка: string; ЧтоЗаменить, ЧемЗаменить: string);
/// Множественная замена символов в строке s
/// Каждый символ source[i] заменяется во всей строке s символом target[i]
function ReplaceMany(s, source, target: string): string;
/// Множественная замена подстрок в строке
/// Каждая подстрока source[i] заменяется во всей строке s подстрокой target[i]
function ReplaceMany(s: string; source, target: IList<string>): string;
/// В строке s меняет местами подстроки ss1 и ss2
procedure SwapSubstr(var s: string; ss1, ss2: string);
/// Выводит тип переменной или выражения
procedure PrintType(o: Object);
/// Выводит тип переменной или выражения, затем переходит к новой строке вывода
procedure PrintlnType(o: Object);
implementation
@ -690,8 +704,8 @@ Digits(Self);
{$region Divisors}
// на основе идеи А. Богданова
/// возвращает список всех делителей натурального числа n
// на основе идеи А. Богданова
function Divisors(n: integer): List<integer>;
begin
Result := new List<integer>;
@ -910,6 +924,52 @@ begin
end
end;
/// Множественная замена символов в строке s
/// Каждый символ source[i] заменяется во всей строке s символом target[i]
function ReplaceMany(s, source, target: string): string;
begin
var SB := new StringBuilder(s);
var m := target.Length;
for var i := 1 to source.Length do
if i <= m then SB.Replace(source[i], target[i])
else SB.Replace(source[i],'');
Result := SB.ToString
end;
/// Множественная замена символов в строке s
/// Каждый символ source[i] заменяется во всей строке s символом target[i]
function ReplaceMany(Self, source, target: string): string;
extensionmethod := ReplaceMany(Self, source, target);
/// Множественная замена подстрок в строке
/// Каждая подстрока source[i] заменяется во всей строке s подстрокой target[i]
function ReplaceMany(s: string; source, target: IList<string>): string;
begin
var SB := new StringBuilder(s);
var tl := target.Count - 1;
for var i := 0 to source.Count - 1 do
if i <= tl then SB.Replace(source[i], target[i])
else SB.Replace(source[i], '');
Result := SB.ToString
end;
/// Множественная замена подстрок в строке
/// Каждая подстрока source[i] заменяется во всей строке s подстрокой target[i]
function ReplaceMany(Self: string; source, target: IList<string>): string;
extensionmethod := ReplaceMany(Self, source, target);
/// В строке s меняет местами подстроки ss1 и ss2
procedure SwapSubstr(var s: string; ss1, ss2: string);
begin
if not ((ss1 in s) and (ss2 in s)) then exit;
var D := Dict((ss1, ss2), (ss2, ss1));
s := Regex.Replace(s, $'({ss1}|{ss2})', m -> D[m.Value])
end;
/// В строке s меняет местами подстроки ss1 и ss2
procedure SwapSubstr(var Self: string; ss1, ss2: string);
extensionmethod := SwapSubstr(Self, ss1, ss2);
/// Выводит тип переменной или выражения
procedure PrintType(o: Object);
begin
@ -941,7 +1001,7 @@ begin
Print(s);
end;
/// Выводит тип переменной или выражения
/// Выводит тип переменной или выражения, затем переходит к новой строке вывода
procedure PrintlnType(o: Object);
begin
PrintType(o);

View file

@ -0,0 +1,5 @@
begin
var s: set of integer;
s := s + [2.5];
Print(s);
end.

View file

@ -2931,7 +2931,7 @@ namespace PascalABCCompiler.TreeConverter
}
public enum int_types { sbyte_type = 0, byte_type = 1, short_type = 2, ushort_type = 3, integer_type = 4, uint_type = 5, int64_type = 6, uint64_type = 7};
public bool is_value_int_type(type_node tn)
public static bool is_value_int_type(type_node tn)
{
return
tn == SystemLibrary.SystemLibrary.sbyte_type ||
@ -2944,13 +2944,13 @@ namespace PascalABCCompiler.TreeConverter
tn == SystemLibrary.SystemLibrary.uint64_type
;
}
public bool is_value_real_type(type_node tn)
public static bool is_value_real_type(type_node tn)
{
return tn == SystemLibrary.SystemLibrary.double_type ||
tn == SystemLibrary.SystemLibrary.float_type
;
}
public bool is_value_num_type(type_node tn)
public static bool is_value_num_type(type_node tn)
{
return is_value_int_type(tn) || is_value_real_type(tn);
}

View file

@ -453,7 +453,16 @@ namespace PascalABCCompiler.TreeRealization
}
else
{
if (tc == type_compare.less_type) // нет - тогда не работает set of integer -> set of 1..4
{
var bti = PascalABCCompiler.TreeConverter.convertion_data_and_alghoritms.is_value_int_type(base_class.element_type);
var dtr = PascalABCCompiler.TreeConverter.convertion_data_and_alghoritms.is_value_real_type(derived_class.element_type);
if (bti && dtr)
return false;
}
type_intersection_node tin = base_class.element_type.get_type_intersection(derived_class.element_type);
// вот тут ошибка. Сравниваются элементы. По идее, надо всегда выдавать false кроме случаев если оба - integer и оба - real
if (tin == null || tin.this_to_another == null)
{
//proverka na diapasony
@ -503,7 +512,7 @@ namespace PascalABCCompiler.TreeRealization
}
}
else
if (derived_class.element_type.type_special_kind == PascalABCCompiler.SemanticTree.type_special_kind.diap_type)
if (derived_class.element_type.type_special_kind == PascalABCCompiler.SemanticTree.type_special_kind.diap_type)
{
if (base_class.element_type == derived_class.element_type.base_type) return true;
tc = get_table_type_compare(base_class.element_type, derived_class.element_type.base_type);