From 97c7897adf0f6894229359519fed0ad461baa9e5 Mon Sep 17 00:00:00 2001
From: Yichao Yu <yyc1992@gmail.com>
Date: Sun, 22 Jun 2014 13:28:41 +0800
Subject: [PATCH] device::get_version

---
 src/c_wrapper/device.cpp   | 9 +++++++++
 src/c_wrapper/device.h     | 1 +
 src/c_wrapper/platform.cpp | 2 +-
 src/c_wrapper/platform.h   | 3 +--
 4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/c_wrapper/device.cpp b/src/c_wrapper/device.cpp
index 49e27e2c..c395b62b 100644
--- a/src/c_wrapper/device.cpp
+++ b/src/c_wrapper/device.cpp
@@ -10,6 +10,15 @@ template void print_clobj<device>(std::ostream&, const device*);
 template void print_buf<cl_device_id>(std::ostream&, const cl_device_id*,
                                       size_t, ArgType, bool, bool);
 
+void
+device::get_version(cl_device_id dev, int *major, int *minor)
+{
+    cl_platform_id plat;
+    pyopencl_call_guarded(clGetDeviceInfo, dev, CL_DEVICE_PLATFORM,
+                          size_arg(plat), nullptr);
+    platform::get_version(plat, major, minor);
+}
+
 device::~device()
 {
     if (false) {
diff --git a/src/c_wrapper/device.h b/src/c_wrapper/device.h
index 274e972d..970047d1 100644
--- a/src/c_wrapper/device.h
+++ b/src/c_wrapper/device.h
@@ -26,6 +26,7 @@ private:
     reference_type_t m_ref_type;
 
 public:
+    static void get_version(cl_device_id dev, int *major, int *minor);
     device(cl_device_id did, bool retain=false,
            reference_type_t ref_type=REF_NOT_OWNABLE)
         : clobj(did), m_ref_type(ref_type)
diff --git a/src/c_wrapper/platform.cpp b/src/c_wrapper/platform.cpp
index 20e36bcf..28b123c8 100644
--- a/src/c_wrapper/platform.cpp
+++ b/src/c_wrapper/platform.cpp
@@ -34,7 +34,7 @@ platform::get_info(cl_uint param_name) const
 static const std::regex ver_regex("^OpenCL ([0-9]+)\\.([0-9]+).*");
 
 void
-get_platform_version(cl_platform_id plat, int *major, int *minor)
+platform::get_version(cl_platform_id plat, int *major, int *minor)
 {
     char s_buff[128];
     size_t size;
diff --git a/src/c_wrapper/platform.h b/src/c_wrapper/platform.h
index 1c47123a..f399392a 100644
--- a/src/c_wrapper/platform.h
+++ b/src/c_wrapper/platform.h
@@ -15,6 +15,7 @@ extern template void print_buf<cl_platform_id>(
 
 class platform : public clobj<cl_platform_id> {
 public:
+    static void get_version(cl_platform_id plat, int *major, int *minor);
     using clobj::clobj;
     PYOPENCL_DEF_CL_CLASS(PLATFORM);
 
@@ -23,8 +24,6 @@ public:
 
 extern template void print_clobj<platform>(std::ostream&, const platform*);
 
-void get_platform_version(cl_platform_id plat, int *major, int *minor);
-
 // }}}
 
 }
-- 
GitLab