case CL_DEVICE_EXTENSIONS:
buf.as_string() =
- "cl_khr_global_int32_base_atomics"
+ "cl_khr_byte_addressable_store"
+ " cl_khr_global_int32_base_atomics"
" cl_khr_global_int32_extended_atomics"
" cl_khr_local_int32_base_atomics"
" cl_khr_local_int32_extended_atomics"
- " cl_khr_byte_addressable_store"
+ + std::string(dev.has_int64_atomics() ? " cl_khr_int64_base_atomics" : "")
+ + std::string(dev.has_int64_atomics() ? " cl_khr_int64_extended_atomics" : "")
+ std::string(dev.has_doubles() ? " cl_khr_fp64" : "")
+ std::string(dev.has_halves() ? " cl_khr_fp16" : "");
break;
PIPE_SHADER_CAP_FP16);
}
+bool
+device::has_int64_atomics() const {
+ return pipe->get_shader_param(pipe, PIPE_SHADER_COMPUTE,
+ PIPE_SHADER_CAP_INT64_ATOMICS);
+}
+
bool
device::has_unified_memory() const {
return pipe->get_param(pipe, PIPE_CAP_UMA);
bool image_support() const;
bool has_doubles() const;
bool has_halves() const;
+ bool has_int64_atomics() const;
bool has_unified_memory() const;
cl_uint mem_base_addr_align() const;