Browse Source

opencl: Reenable OpenCL kernel binaries for Mesa OpenCL >= 10.1

Luke Dashjr 12 years ago
parent
commit
0678c51c74
1 changed files with 18 additions and 4 deletions
  1. 18 4
      ocl.c

+ 18 - 4
ocl.c

@@ -573,11 +573,25 @@ _clState *initCl(unsigned int gpu, char *name, size_t nameSize)
 	}
 	applog(LOG_DEBUG, "Max mem alloc size is %lu", (unsigned long)data->max_alloc);
 	
-	if (strstr(vbuff, "MESA"))
+	find = strstr(vbuff, "MESA");
+	if (find)
 	{
-		applog(LOG_DEBUG, "Mesa OpenCL platform detected, disabling OpenCL kernel binaries and bitalign");
-		clState->hasBitAlign = false;
-		usebinary = false;
+		long int major = strtol(&find[4], &s, 10), minor;
+		if (!major)
+		{} // No version number at all
+		else
+		if (s[0] == '.')
+			minor = strtol(&s[1], NULL, 10);
+		else
+			minor = 0;
+		if (major < 10 || (major == 10 && minor < 1))
+		{
+			applog(LOG_DEBUG, "Mesa OpenCL platform detected (v%ld.%ld), disabling OpenCL kernel binaries and bitalign", major, minor);
+			clState->hasBitAlign = false;
+			usebinary = false;
+		}
+		else
+			applog(LOG_DEBUG, "Mesa OpenCL platform detected (v%ld.%ld)", major, minor);
 		ismesa = true;
 	}