From a88dc0867629ca7ed40134cc90f3fbae001e9f80 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Fri, 22 Apr 2011 19:37:45 -0400
Subject: [PATCH] Add support for cl_amd_offline_devices,
 cl_amd_device_memory_flags.

---
 doc/make_constants.py          | 12 ++++++++++++
 src/wrapper/wrap_constants.cpp | 11 +++++++++++
 2 files changed, 23 insertions(+)

diff --git a/doc/make_constants.py b/doc/make_constants.py
index d50da9a3..0f96b348 100644
--- a/doc/make_constants.py
+++ b/doc/make_constants.py
@@ -10,6 +10,7 @@ iam = cl.addressing_mode
 evi = cl.event_info
 memi = cl.mem_info
 ctype = cl.command_type
+memf = cl.mem_flags
 
 def get_extra_lines(tup):
     ext_name, pyopencl_ver = tup
@@ -62,6 +63,9 @@ const_ext_lookup = {
             ("cl_khr_fp64", "2011.1"),
             getattr(devi, "HALF_FP_CONFIG", None):
             ("cl_khr_fp16", "2011.1"),
+
+            getattr(devi, "PROFILING_TIMER_OFFSET_AMD", None):
+            ("cl_amd_device_attribute_query", "2011.1"),
             },
 
         ctxp: {
@@ -70,6 +74,9 @@ const_ext_lookup = {
             getattr(ctxp, "GLX_DISPLAY_KHR", None): ("cl_khr_gl_sharing", "0.92"),
             getattr(ctxp, "WGL_HDC_KHR", None): ("cl_khr_gl_sharing", "0.92"),
             getattr(ctxp, "CGL_SHAREGROUP_KHR", None): ("cl_khr_gl_sharing", "0.92"),
+
+            getattr(ctxp, "OFFLINE_DEVICES_AMD", None): 
+            ("cl_amd_offline_devices", "2011.1"),
             },
 
         fpc: {
@@ -110,6 +117,11 @@ const_ext_lookup = {
             getattr(ctype, "COPY_BUFFER_RECT", None): ("CL_1.1", "0.92"),
             getattr(ctype, "USER", None): ("CL_1.1", "0.92"),
             },
+
+        memf: {
+            getattr(memf, "USE_PERSISTENT_MEM_AMD", None): 
+            ("cl_amd_device_memory_flags", "2011.1"),
+            }
         }
 try:
     gl_ci = cl.gl_context_info
diff --git a/src/wrapper/wrap_constants.cpp b/src/wrapper/wrap_constants.cpp
index 39cdec38..a86ac003 100644
--- a/src/wrapper/wrap_constants.cpp
+++ b/src/wrapper/wrap_constants.cpp
@@ -200,6 +200,10 @@ void pyopencl_expose_constants()
     ADD_ATTR(DEVICE_, GPU_OVERLAP_NV);
     ADD_ATTR(DEVICE_, KERNEL_EXEC_TIMEOUT_NV);
     ADD_ATTR(DEVICE_, INTEGRATED_MEMORY_NV);
+#endif
+// cl_amd_device_attribute_query
+#ifdef CL_DEVICE_PROFILING_TIMER_OFFSET_AMD
+    ADD_ATTR(DEVICE_, PROFILING_TIMER_OFFSET_AMD);
 #endif
   }
 
@@ -248,6 +252,10 @@ void pyopencl_expose_constants()
     ADD_ATTR(CONTEXT_, PROPERTIES);
 #ifdef CL_VERSION_1_1
     ADD_ATTR(CONTEXT_, NUM_DEVICES);
+#endif
+// cl_amd_offline_devices
+#ifdef CL_CONTEXT_OFFLINE_DEVICES_AMD
+    ADD_ATTR(CONTEXT_, OFFLINE_DEVICES_AMD);
 #endif
   }
 
@@ -290,6 +298,9 @@ void pyopencl_expose_constants()
     ADD_ATTR(MEM_, USE_HOST_PTR);
     ADD_ATTR(MEM_, ALLOC_HOST_PTR);
     ADD_ATTR(MEM_, COPY_HOST_PTR);
+#ifdef cl_amd_device_memory_flags
+    ADD_ATTR(MEM_, USE_PERSISTENT_MEM_AMD);
+#endif
   }
 
   {
-- 
GitLab