summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Vesely <[email protected]>2017-09-20 16:06:10 -0400
committerJan Vesely <[email protected]>2017-09-27 11:13:22 -0400
commitf67ceeffd418d5757b01cc5493a8456b931db087 (patch)
treef76e8b0013a684579139271393cc85eebf4cec5f
parent08521629503356a5cfe8e673b32ece7cb4aefff2 (diff)
clover: Query and export int64 atomics
Signed-off-by: Jan Vesely <[email protected]> Reviewed-by: Francisco Jerez <[email protected]>
-rw-r--r--src/gallium/state_trackers/clover/api/device.cpp6
-rw-r--r--src/gallium/state_trackers/clover/core/device.cpp6
-rw-r--r--src/gallium/state_trackers/clover/core/device.hpp1
3 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/clover/api/device.cpp b/src/gallium/state_trackers/clover/api/device.cpp
index 26e88aadc73..3572bb0c921 100644
--- a/src/gallium/state_trackers/clover/api/device.cpp
+++ b/src/gallium/state_trackers/clover/api/device.cpp
@@ -331,11 +331,13 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
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;
diff --git a/src/gallium/state_trackers/clover/core/device.cpp b/src/gallium/state_trackers/clover/core/device.cpp
index c0ee0acaaf9..9dd7eed3f17 100644
--- a/src/gallium/state_trackers/clover/core/device.cpp
+++ b/src/gallium/state_trackers/clover/core/device.cpp
@@ -197,6 +197,12 @@ device::has_halves() const {
}
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);
}
diff --git a/src/gallium/state_trackers/clover/core/device.hpp b/src/gallium/state_trackers/clover/core/device.hpp
index c61be790a94..85cd031676d 100644
--- a/src/gallium/state_trackers/clover/core/device.hpp
+++ b/src/gallium/state_trackers/clover/core/device.hpp
@@ -68,6 +68,7 @@ namespace clover {
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;