diff --git a/api/boinc_opencl.cpp b/api/boinc_opencl.cpp
index f31b73d0948abce6468b9404e3a9ffac6d386e07..976fff33ae57c7deb5a6f70789a74b089e5fc970 100644
--- a/api/boinc_opencl.cpp
+++ b/api/boinc_opencl.cpp
@@ -75,6 +75,10 @@ int get_vendor(cl_device_id device_id, char* vendor, int len) {
         strlcpy(vendor, GPU_TYPE_INTEL, len);     // "intel_gpu"
     }
 
+    if (strcasestr(vendor, "apple")) {
+        strlcpy(vendor, GPU_TYPE_APPLE, len);     // "intel_gpu"
+    }
+
     return 0;
 }
 
diff --git a/lib/coproc.cpp b/lib/coproc.cpp
index 083288c2c0dd4a44762d90cb3ba7fbe4d2914c81..13f451646248a16e91394419b511af2cb278aed8 100644
--- a/lib/coproc.cpp
+++ b/lib/coproc.cpp
@@ -212,6 +212,7 @@ void COPROCS::summary_string(char* buf, int len) {
         if (type == PROC_TYPE_NVIDIA_GPU) continue;
         if (type == PROC_TYPE_AMD_GPU) continue;
         if (type == PROC_TYPE_INTEL_GPU) continue;
+        if (type == PROC_TYPE_APPLE_GPU) continue;
         if (!strlen(cp.opencl_prop.name)) continue;
         snprintf(buf2, sizeof(buf2),
             "[opencl_gpu|%s|%d|%dMB|%d]",
@@ -1020,6 +1021,7 @@ const char* proc_type_name_xml(int pt) {
     case PROC_TYPE_NVIDIA_GPU: return "NVIDIA";
     case PROC_TYPE_AMD_GPU: return "ATI";
     case PROC_TYPE_INTEL_GPU: return "intel_gpu";
+    case PROC_TYPE_APPLE_GPU: return "apple_gpu";
     case PROC_TYPE_MINER_ASIC: return "miner_asic";
     }
     return "unknown";
@@ -1031,6 +1033,7 @@ const char* proc_type_name(int pt) {
     case PROC_TYPE_NVIDIA_GPU: return "NVIDIA GPU";
     case PROC_TYPE_AMD_GPU: return "AMD/ATI GPU";
     case PROC_TYPE_INTEL_GPU: return "Intel GPU";
+    case PROC_TYPE_APPLE_GPU: return "Apple GPU";
     case PROC_TYPE_MINER_ASIC: return "Miner ASIC";
     }
     return "unknown";
diff --git a/lib/coproc.h b/lib/coproc.h
index f23db843de7bfb37b0a8cf434f767170581d6d10..c2abf441c672e6bf02944630f31239badc6dc42f 100644
--- a/lib/coproc.h
+++ b/lib/coproc.h
@@ -107,7 +107,8 @@
 #define PROC_TYPE_AMD_GPU    2
 #define PROC_TYPE_INTEL_GPU  3
 #define PROC_TYPE_MINER_ASIC 4
-#define NPROC_TYPES          5
+#define PROC_TYPE_APPLE_GPU  5
+#define NPROC_TYPES          6
 
 extern const char* proc_type_name(int);
     // user-readable name
@@ -119,6 +120,7 @@ extern int coproc_type_name_to_num(const char* name);
 #define GPU_TYPE_NVIDIA proc_type_name_xml(PROC_TYPE_NVIDIA_GPU)
 #define GPU_TYPE_ATI proc_type_name_xml(PROC_TYPE_AMD_GPU)
 #define GPU_TYPE_INTEL proc_type_name_xml(PROC_TYPE_INTEL_GPU)
+#define GPU_TYPE_APPLE proc_type_name_xml(PROC_TYPE_APPLE_GPU)
 
 // represents a requirement for a coproc.
 // This is a parsed version of the <coproc> elements in an <app_version>