LOCAL cl_int cl_get_platform_info(cl_platform_id platform, cl_platform_info param_name, size_t param_value_size, void * param_value, size_t * param_value_size_ret) { if (param_value == NULL) { switch (param_name) { GET_FIELD_SZ (PLATFORM_PROFILE, profile); GET_FIELD_SZ (PLATFORM_VERSION, version); GET_FIELD_SZ (PLATFORM_NAME, name); GET_FIELD_SZ (PLATFORM_VENDOR, vendor); GET_FIELD_SZ (PLATFORM_EXTENSIONS, extensions); GET_FIELD_SZ (PLATFORM_ICD_SUFFIX_KHR, icd_suffix_khr); default: return CL_INVALID_VALUE; } } /* Fetch the platform inform */ switch (param_name) { DECL_FIELD (PLATFORM_PROFILE, profile); DECL_FIELD (PLATFORM_VERSION, version); DECL_FIELD (PLATFORM_NAME, name); DECL_FIELD (PLATFORM_VENDOR, vendor); DECL_FIELD (PLATFORM_EXTENSIONS, extensions); DECL_FIELD (PLATFORM_ICD_SUFFIX_KHR, icd_suffix_khr); default: return CL_INVALID_VALUE; } }
LOCAL cl_int cl_get_kernel_workgroup_info(cl_kernel kernel, cl_device_id device, cl_kernel_work_group_info param_name, size_t param_value_size, void* param_value, size_t* param_value_size_ret) { int err = CL_SUCCESS; int dimension = 0; if (UNLIKELY(device != &intel_ivb_gt1_device && device != &intel_ivb_gt2_device && device != &intel_baytrail_t_device && device != &intel_hsw_gt1_device && device != &intel_hsw_gt2_device && device != &intel_hsw_gt3_device && device != &intel_brw_gt1_device && device != &intel_brw_gt2_device && device != &intel_brw_gt3_device && device != &intel_skl_gt1_device && device != &intel_skl_gt2_device && device != &intel_skl_gt3_device && device != &intel_skl_gt4_device)) return CL_INVALID_DEVICE; CHECK_KERNEL(kernel); switch (param_name) { case CL_KERNEL_WORK_GROUP_SIZE: { if (param_value && param_value_size < sizeof(size_t)) return CL_INVALID_VALUE; if (param_value_size_ret != NULL) *param_value_size_ret = sizeof(size_t); if (param_value) { size_t work_group_size = cl_get_kernel_max_wg_sz(kernel); *(size_t*)param_value = work_group_size; return CL_SUCCESS; } } DECL_FIELD(PREFERRED_WORK_GROUP_SIZE_MULTIPLE, device->preferred_wg_sz_mul) case CL_KERNEL_LOCAL_MEM_SIZE: { size_t local_mem_sz = interp_kernel_get_slm_size(kernel->opaque) + kernel->local_mem_sz; _DECL_FIELD(local_mem_sz) } DECL_FIELD(COMPILE_WORK_GROUP_SIZE, kernel->compile_wg_sz) DECL_FIELD(PRIVATE_MEM_SIZE, kernel->stack_size) case CL_KERNEL_GLOBAL_WORK_SIZE: dimension = cl_check_builtin_kernel_dimension(kernel, device); if ( !dimension ) return CL_INVALID_VALUE; if (param_value_size_ret != NULL) *param_value_size_ret = sizeof(device->max_1d_global_work_sizes); if (param_value) { if (dimension == 1) { memcpy(param_value, device->max_1d_global_work_sizes, sizeof(device->max_1d_global_work_sizes)); }else if(dimension == 2){ memcpy(param_value, device->max_2d_global_work_sizes, sizeof(device->max_2d_global_work_sizes)); }else if(dimension == 3){ memcpy(param_value, device->max_3d_global_work_sizes, sizeof(device->max_3d_global_work_sizes)); }else return CL_INVALID_VALUE; return CL_SUCCESS; } return CL_SUCCESS; default: return CL_INVALID_VALUE; }; error: return err; }
#include "stdafx.h" // nt!_POOL_DESCRIPTOR SYM_FIELD g_StructPoolDescriptor[] = { DECL_FIELD(PoolType), DECL_FIELD(PoolIndex), DECL_FIELD(PendingFreeDepth), DECL_FIELD(RunningAllocs), DECL_FIELD(RunningDeAllocs), DECL_FIELD(TotalBigPages), DECL_FIELD(ThreadsProcessingDeferrals), DECL_FIELD(TotalBytes), DECL_FIELD(TotalPages), DECL_FIELD(ListHeads), END_FIELD }; // nt!_EPROCESS SYM_FIELD g_StructEprocess[] = { DECL_FIELD(Session), END_FIELD }; // nt!_MM_SESSION_SPACE SYM_FIELD g_StructMmSessionSpace[] = { DECL_FIELD(SessionId), DECL_FIELD(Lookaside),
LOCAL cl_int cl_get_device_info(cl_device_id device, cl_device_info param_name, size_t param_value_size, void * param_value, size_t * param_value_size_ret) { if (UNLIKELY(device != &intel_ivb_gt1_device && device != &intel_ivb_gt2_device && device != &intel_baytrail_t_device && device != &intel_hsw_gt1_device && device != &intel_hsw_gt2_device && device != &intel_hsw_gt3_device && device != &intel_brw_gt1_device && device != &intel_brw_gt2_device && device != &intel_brw_gt3_device && device != &intel_skl_gt1_device && device != &intel_skl_gt2_device && device != &intel_skl_gt3_device && device != &intel_skl_gt4_device )) return CL_INVALID_DEVICE; /* Find the correct parameter */ switch (param_name) { DECL_FIELD(TYPE, device_type) DECL_FIELD(VENDOR_ID, vendor_id) DECL_FIELD(MAX_COMPUTE_UNITS, max_compute_unit) DECL_FIELD(MAX_WORK_ITEM_DIMENSIONS, max_work_item_dimensions) DECL_FIELD(MAX_WORK_ITEM_SIZES, max_work_item_sizes) DECL_FIELD(MAX_WORK_GROUP_SIZE, max_work_group_size) DECL_FIELD(PREFERRED_VECTOR_WIDTH_CHAR, preferred_vector_width_char) DECL_FIELD(PREFERRED_VECTOR_WIDTH_SHORT, preferred_vector_width_short) DECL_FIELD(PREFERRED_VECTOR_WIDTH_INT, preferred_vector_width_int) DECL_FIELD(PREFERRED_VECTOR_WIDTH_LONG, preferred_vector_width_long) DECL_FIELD(PREFERRED_VECTOR_WIDTH_FLOAT, preferred_vector_width_float) DECL_FIELD(PREFERRED_VECTOR_WIDTH_DOUBLE, preferred_vector_width_double) DECL_FIELD(PREFERRED_VECTOR_WIDTH_HALF, preferred_vector_width_half) DECL_FIELD(NATIVE_VECTOR_WIDTH_CHAR, native_vector_width_char) DECL_FIELD(NATIVE_VECTOR_WIDTH_SHORT, native_vector_width_short) DECL_FIELD(NATIVE_VECTOR_WIDTH_INT, native_vector_width_int) DECL_FIELD(NATIVE_VECTOR_WIDTH_LONG, native_vector_width_long) DECL_FIELD(NATIVE_VECTOR_WIDTH_FLOAT, native_vector_width_float) DECL_FIELD(NATIVE_VECTOR_WIDTH_DOUBLE, native_vector_width_double) DECL_FIELD(NATIVE_VECTOR_WIDTH_HALF, native_vector_width_half) DECL_FIELD(MAX_CLOCK_FREQUENCY, max_clock_frequency) DECL_FIELD(ADDRESS_BITS, address_bits) DECL_FIELD(MAX_MEM_ALLOC_SIZE, max_mem_alloc_size) DECL_FIELD(IMAGE_SUPPORT, image_support) DECL_FIELD(MAX_READ_IMAGE_ARGS, max_read_image_args) DECL_FIELD(MAX_WRITE_IMAGE_ARGS, max_write_image_args) DECL_FIELD(IMAGE_MAX_ARRAY_SIZE, image_max_array_size) DECL_FIELD(IMAGE2D_MAX_WIDTH, image2d_max_width) DECL_FIELD(IMAGE2D_MAX_HEIGHT, image2d_max_height) DECL_FIELD(IMAGE3D_MAX_WIDTH, image3d_max_width) DECL_FIELD(IMAGE3D_MAX_HEIGHT, image3d_max_height) DECL_FIELD(IMAGE3D_MAX_DEPTH, image3d_max_depth) DECL_FIELD(MAX_SAMPLERS, max_samplers) DECL_FIELD(MAX_PARAMETER_SIZE, max_parameter_size) DECL_FIELD(MEM_BASE_ADDR_ALIGN, mem_base_addr_align) DECL_FIELD(MIN_DATA_TYPE_ALIGN_SIZE, min_data_type_align_size) DECL_FIELD(SINGLE_FP_CONFIG, single_fp_config) DECL_FIELD(DOUBLE_FP_CONFIG, double_fp_config) DECL_FIELD(GLOBAL_MEM_CACHE_TYPE, global_mem_cache_type) DECL_FIELD(GLOBAL_MEM_CACHELINE_SIZE, global_mem_cache_line_size) DECL_FIELD(GLOBAL_MEM_CACHE_SIZE, global_mem_cache_size) DECL_FIELD(GLOBAL_MEM_SIZE, global_mem_size) DECL_FIELD(MAX_CONSTANT_BUFFER_SIZE, max_constant_buffer_size) DECL_FIELD(IMAGE_MAX_BUFFER_SIZE, image_mem_size) DECL_FIELD(MAX_CONSTANT_ARGS, max_constant_args) DECL_FIELD(LOCAL_MEM_TYPE, local_mem_type) DECL_FIELD(LOCAL_MEM_SIZE, local_mem_size) DECL_FIELD(ERROR_CORRECTION_SUPPORT, error_correction_support) DECL_FIELD(HOST_UNIFIED_MEMORY, host_unified_memory) DECL_FIELD(PROFILING_TIMER_RESOLUTION, profiling_timer_resolution) DECL_FIELD(ENDIAN_LITTLE, endian_little) DECL_FIELD(AVAILABLE, available) DECL_FIELD(COMPILER_AVAILABLE, compiler_available) DECL_FIELD(LINKER_AVAILABLE, linker_available) DECL_FIELD(EXECUTION_CAPABILITIES, execution_capabilities) DECL_FIELD(QUEUE_PROPERTIES, queue_properties) DECL_FIELD(PLATFORM, platform) DECL_FIELD(PRINTF_BUFFER_SIZE, printf_buffer_size) DECL_FIELD(PREFERRED_INTEROP_USER_SYNC, interop_user_sync) DECL_STRING_FIELD(NAME, name) DECL_STRING_FIELD(VENDOR, vendor) DECL_STRING_FIELD(VERSION, version) DECL_STRING_FIELD(PROFILE, profile) DECL_STRING_FIELD(OPENCL_C_VERSION, opencl_c_version) DECL_STRING_FIELD(EXTENSIONS, extensions); DECL_STRING_FIELD(BUILT_IN_KERNELS, built_in_kernels) DECL_FIELD(PARENT_DEVICE, parent_device) DECL_FIELD(PARTITION_MAX_SUB_DEVICES, partition_max_sub_device) DECL_FIELD(PARTITION_PROPERTIES, partition_property) DECL_FIELD(PARTITION_AFFINITY_DOMAIN, affinity_domain) DECL_FIELD(PARTITION_TYPE, partition_type) DECL_FIELD(REFERENCE_COUNT, device_reference_count) case CL_DRIVER_VERSION: if (param_value_size_ret) { *param_value_size_ret = device->driver_version_sz; if (!param_value) return CL_SUCCESS; } if (param_value_size < device->driver_version_sz) return CL_INVALID_VALUE; memcpy(param_value, device->driver_version, device->driver_version_sz); return CL_SUCCESS; default: return CL_INVALID_VALUE; }; }