/* MACHINE GENERATED FILE, DO NOT EDIT */ package org.lwjgl.opencl; import java.util.*; public class CLDeviceCapabilities { public final int majorVersion; public final int minorVersion; public final boolean OpenCL11; public final boolean OpenCL12; public final boolean CL_AMD_device_attribute_query; public final boolean CL_AMD_device_memory_flags; public final boolean CL_AMD_fp64; public final boolean CL_AMD_media_ops; public final boolean CL_AMD_media_ops2; public final boolean CL_AMD_offline_devices; public final boolean CL_AMD_popcnt; public final boolean CL_AMD_printf; public final boolean CL_AMD_vec3; final boolean CL_APPLE_ContextLoggingFunctions; public final boolean CL_APPLE_SetMemObjectDestructor; public final boolean CL_APPLE_gl_sharing; public final boolean CL_EXT_atomic_counters_32; public final boolean CL_EXT_atomic_counters_64; public final boolean CL_EXT_device_fission; public final boolean CL_EXT_migrate_memobject; public final boolean CL_INTEL_immediate_execution; public final boolean CL_INTEL_printf; public final boolean CL_INTEL_thread_local_exec; public final boolean CL_KHR_3d_image_writes; public final boolean CL_KHR_byte_addressable_store; public final boolean CL_KHR_fp16; public final boolean CL_KHR_fp64; public final boolean CL_KHR_gl_event; public final boolean CL_KHR_gl_sharing; public final boolean CL_KHR_global_int32_base_atomics; public final boolean CL_KHR_global_int32_extended_atomics; public final boolean CL_KHR_int64_base_atomics; public final boolean CL_KHR_int64_extended_atomics; public final boolean CL_KHR_local_int32_base_atomics; public final boolean CL_KHR_local_int32_extended_atomics; public final boolean CL_KHR_select_fprounding_mode; public final boolean CL_NV_compiler_options; public final boolean CL_NV_device_attribute_query; public final boolean CL_NV_pragma_unroll; public CLDeviceCapabilities(final CLDevice device) { final String extensionList = device.getInfoString(CL10.CL_DEVICE_EXTENSIONS); final String version = device.getInfoString(CL10.CL_DEVICE_VERSION); if ( !version.startsWith("OpenCL ") ) throw new RuntimeException("Invalid OpenCL version string: " + version); try { final StringTokenizer tokenizer = new StringTokenizer(version.substring(7), ". "); majorVersion = Integer.parseInt(tokenizer.nextToken()); minorVersion = Integer.parseInt(tokenizer.nextToken()); OpenCL11 = 1 < majorVersion || (1 == majorVersion && 1 <= minorVersion); OpenCL12 = 1 < majorVersion || (1 == majorVersion && 2 <= minorVersion); } catch (RuntimeException e) { throw new RuntimeException("The major and/or minor OpenCL version \"" + version + "\" is malformed: " + e.getMessage()); } final Set<String> extensions = APIUtil.getExtensions(extensionList); CL_AMD_device_attribute_query = extensions.contains("cl_amd_device_attribute_query"); CL_AMD_device_memory_flags = extensions.contains("cl_amd_device_memory_flags"); CL_AMD_fp64 = extensions.contains("cl_amd_fp64"); CL_AMD_media_ops = extensions.contains("cl_amd_media_ops"); CL_AMD_media_ops2 = extensions.contains("cl_amd_media_ops2"); CL_AMD_offline_devices = extensions.contains("cl_amd_offline_devices"); CL_AMD_popcnt = extensions.contains("cl_amd_popcnt"); CL_AMD_printf = extensions.contains("cl_amd_printf"); CL_AMD_vec3 = extensions.contains("cl_amd_vec3"); CL_APPLE_ContextLoggingFunctions = extensions.contains("cl_apple_contextloggingfunctions") && CLCapabilities.CL_APPLE_ContextLoggingFunctions; CL_APPLE_SetMemObjectDestructor = extensions.contains("cl_apple_setmemobjectdestructor") && CLCapabilities.CL_APPLE_SetMemObjectDestructor; CL_APPLE_gl_sharing = extensions.contains("cl_apple_gl_sharing") && CLCapabilities.CL_APPLE_gl_sharing; CL_EXT_atomic_counters_32 = extensions.contains("cl_ext_atomic_counters_32"); CL_EXT_atomic_counters_64 = extensions.contains("cl_ext_atomic_counters_64"); CL_EXT_device_fission = extensions.contains("cl_ext_device_fission") && CLCapabilities.CL_EXT_device_fission; CL_EXT_migrate_memobject = extensions.contains("cl_ext_migrate_memobject") && CLCapabilities.CL_EXT_migrate_memobject; CL_INTEL_immediate_execution = extensions.contains("cl_intel_immediate_execution"); CL_INTEL_printf = extensions.contains("cl_intel_printf"); CL_INTEL_thread_local_exec = extensions.contains("cl_intel_thread_local_exec"); CL_KHR_3d_image_writes = extensions.contains("cl_khr_3d_image_writes"); CL_KHR_byte_addressable_store = extensions.contains("cl_khr_byte_addressable_store"); CL_KHR_fp16 = extensions.contains("cl_khr_fp16"); CL_KHR_fp64 = extensions.contains("cl_khr_fp64"); CL_KHR_gl_event = extensions.contains("cl_khr_gl_event") && CLCapabilities.CL_KHR_gl_event; CL_KHR_gl_sharing = extensions.contains("cl_khr_gl_sharing") && CLCapabilities.CL_KHR_gl_sharing; CL_KHR_global_int32_base_atomics = extensions.contains("cl_khr_global_int32_base_atomics"); CL_KHR_global_int32_extended_atomics = extensions.contains("cl_khr_global_int32_extended_atomics"); CL_KHR_int64_base_atomics = extensions.contains("cl_khr_int64_base_atomics"); CL_KHR_int64_extended_atomics = extensions.contains("cl_khr_int64_extended_atomics"); CL_KHR_local_int32_base_atomics = extensions.contains("cl_khr_local_int32_base_atomics"); CL_KHR_local_int32_extended_atomics = extensions.contains("cl_khr_local_int32_extended_atomics"); CL_KHR_select_fprounding_mode = extensions.contains("cl_khr_select_fprounding_mode"); CL_NV_compiler_options = extensions.contains("cl_nv_compiler_options"); CL_NV_device_attribute_query = extensions.contains("cl_nv_device_attribute_query"); CL_NV_pragma_unroll = extensions.contains("cl_nv_pragma_unroll"); } public int getMajorVersion() { return majorVersion; } public int getMinorVersion() { return minorVersion; } public String toString() { final StringBuilder buf = new StringBuilder(); buf.append("OpenCL ").append(majorVersion).append('.').append(minorVersion); buf.append(" - Extensions: "); if ( CL_AMD_device_attribute_query ) buf.append("cl_amd_device_attribute_query "); if ( CL_AMD_device_memory_flags ) buf.append("cl_amd_device_memory_flags "); if ( CL_AMD_fp64 ) buf.append("cl_amd_fp64 "); if ( CL_AMD_media_ops ) buf.append("cl_amd_media_ops "); if ( CL_AMD_media_ops2 ) buf.append("cl_amd_media_ops2 "); if ( CL_AMD_offline_devices ) buf.append("cl_amd_offline_devices "); if ( CL_AMD_popcnt ) buf.append("cl_amd_popcnt "); if ( CL_AMD_printf ) buf.append("cl_amd_printf "); if ( CL_AMD_vec3 ) buf.append("cl_amd_vec3 "); if ( CL_APPLE_ContextLoggingFunctions ) buf.append("cl_apple_contextloggingfunctions "); if ( CL_APPLE_SetMemObjectDestructor ) buf.append("cl_apple_setmemobjectdestructor "); if ( CL_APPLE_gl_sharing ) buf.append("cl_apple_gl_sharing "); if ( CL_EXT_atomic_counters_32 ) buf.append("cl_ext_atomic_counters_32 "); if ( CL_EXT_atomic_counters_64 ) buf.append("cl_ext_atomic_counters_64 "); if ( CL_EXT_device_fission ) buf.append("cl_ext_device_fission "); if ( CL_EXT_migrate_memobject ) buf.append("cl_ext_migrate_memobject "); if ( CL_INTEL_immediate_execution ) buf.append("cl_intel_immediate_execution "); if ( CL_INTEL_printf ) buf.append("cl_intel_printf "); if ( CL_INTEL_thread_local_exec ) buf.append("cl_intel_thread_local_exec "); if ( CL_KHR_3d_image_writes ) buf.append("cl_khr_3d_image_writes "); if ( CL_KHR_byte_addressable_store ) buf.append("cl_khr_byte_addressable_store "); if ( CL_KHR_fp16 ) buf.append("cl_khr_fp16 "); if ( CL_KHR_fp64 ) buf.append("cl_khr_fp64 "); if ( CL_KHR_gl_event ) buf.append("cl_khr_gl_event "); if ( CL_KHR_gl_sharing ) buf.append("cl_khr_gl_sharing "); if ( CL_KHR_global_int32_base_atomics ) buf.append("cl_khr_global_int32_base_atomics "); if ( CL_KHR_global_int32_extended_atomics ) buf.append("cl_khr_global_int32_extended_atomics "); if ( CL_KHR_int64_base_atomics ) buf.append("cl_khr_int64_base_atomics "); if ( CL_KHR_int64_extended_atomics ) buf.append("cl_khr_int64_extended_atomics "); if ( CL_KHR_local_int32_base_atomics ) buf.append("cl_khr_local_int32_base_atomics "); if ( CL_KHR_local_int32_extended_atomics ) buf.append("cl_khr_local_int32_extended_atomics "); if ( CL_KHR_select_fprounding_mode ) buf.append("cl_khr_select_fprounding_mode "); if ( CL_NV_compiler_options ) buf.append("cl_nv_compiler_options "); if ( CL_NV_device_attribute_query ) buf.append("cl_nv_device_attribute_query "); if ( CL_NV_pragma_unroll ) buf.append("cl_nv_pragma_unroll "); return buf.toString(); } }