fix #2540
This commit is contained in:
parent
1350e178a7
commit
bf59fac607
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=8
|
||||
%REVISION%=2999
|
||||
%COREVERSION%=1
|
||||
%REVISION%=3004
|
||||
%MINOR%=8
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
3.8.1.2999
|
||||
3.8.1.3004
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.8.1.2999'
|
||||
!define VERSION '3.8.1.3004'
|
||||
|
|
|
|||
|
|
@ -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 Функции}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
5
TestSuite/errors/err0434.pas
Normal file
5
TestSuite/errors/err0434.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
begin
|
||||
var s: set of integer;
|
||||
s := s + [2.5];
|
||||
Print(s);
|
||||
end.
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue