Hello,

Attached is a patch that

* Explicit marks SandyBridge as unsupported
* Allows cl_get_device_ids to return CL_DEVICE_NOT_FOUND in all cases
* Allows the test suite to run for unsupported devices

This gives

 [run/total: 657/657]    pass: 0; fail: 655; pass rate: 0.003044
summary:
----------
  total: 657
  run: 657
  pass: 0
  fail: 655
  pass rate: 0.003044

on my SandyBridge HD 3000 (Note, that 2 test cases are missing from the result).

Patch is submitted under LGPL v2 or higher.

Thanks in advance for considering this patch, and keep up the good work !

Best regards,
 Jesper
>From 7ae37148ee9bde7dd3d53a3b96c88994a6897765 Mon Sep 17 00:00:00 2001
From: Jesper Pedersen <[email protected]>
Date: Sun, 13 Apr 2014 09:58:12 -0400
Subject: [PATCH] Mark SandyBridge as unsupported

---
 src/cl_device_id.c      | 17 +++++++++++++++--
 utests/utest_helper.cpp | 30 ++++++++++++++++++------------
 2 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/src/cl_device_id.c b/src/cl_device_id.c
index 0426738..c6bce7d 100644
--- a/src/cl_device_id.c
+++ b/src/cl_device_id.c
@@ -182,9 +182,22 @@ ivb_gt2_break:
       intel_ivb_gt2_device.platform = intel_platform;
       ret = &intel_ivb_gt2_device;
       break;
+
+    case PCI_CHIP_SANDYBRIDGE_BRIDGE:
+    case PCI_CHIP_SANDYBRIDGE_GT1:
+    case PCI_CHIP_SANDYBRIDGE_GT2:
+    case PCI_CHIP_SANDYBRIDGE_GT2_PLUS:
+    case PCI_CHIP_SANDYBRIDGE_BRIDGE_M:
+    case PCI_CHIP_SANDYBRIDGE_M_GT1:
+    case PCI_CHIP_SANDYBRIDGE_M_GT2:
+    case PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS:
+    case PCI_CHIP_SANDYBRIDGE_BRIDGE_S:
+    case PCI_CHIP_SANDYBRIDGE_S_GT:
+      // Intel(R) HD Graphics SandyBridge not supported yet
+      ret = NULL;
+      break;
     default:
-      printf("cl_get_gt_device(): error, unknown device\n");
-      exit(1);
+      printf("cl_get_gt_device(): error, unknown device: %x\n", device_id);
   }
 
   return ret;
diff --git a/utests/utest_helper.cpp b/utests/utest_helper.cpp
index a9e270e..cb4dd66 100644
--- a/utests/utest_helper.cpp
+++ b/utests/utest_helper.cpp
@@ -337,20 +337,26 @@ cl_ocl_init(void)
   GET_PLATFORM_STR_INFO(extensions, EXTENSIONS);
 
   /* Get the device (only GPU device is supported right now) */
-  OCL_CALL (clGetDeviceIDs, platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL);
-  {
-    size_t param_value_size;
-    GET_DEVICE_STR_INFO(profile, PROFILE);
-    GET_DEVICE_STR_INFO(name, NAME);
-    GET_DEVICE_STR_INFO(vendor, VENDOR);
-    GET_DEVICE_STR_INFO(version, VERSION);
-    GET_DEVICE_STR_INFO(extensions, EXTENSIONS);
-    GET_DEVICE_STR_INFO(opencl_c_version, OPENCL_C_VERSION);
+  try {
+    OCL_CALL (clGetDeviceIDs, platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL);
+    {
+      size_t param_value_size;
+      GET_DEVICE_STR_INFO(profile, PROFILE);
+      GET_DEVICE_STR_INFO(name, NAME);
+      GET_DEVICE_STR_INFO(vendor, VENDOR);
+      GET_DEVICE_STR_INFO(version, VERSION);
+      GET_DEVICE_STR_INFO(extensions, EXTENSIONS);
+      GET_DEVICE_STR_INFO(opencl_c_version, OPENCL_C_VERSION);
 #ifdef HAS_EGL
-    if (std::strstr(extensionsStr.c_str(), "cl_khr_gl_sharing")) {
-      hasGLExt = true;
-    }
+      if (std::strstr(extensionsStr.c_str(), "cl_khr_gl_sharing")) {
+        hasGLExt = true;
+      }
 #endif
+    }
+  } catch (...) {
+     fprintf(stderr, "error calling clGetDeviceIDs\n");
+     status = CL_DEVICE_NOT_FOUND;
+     goto error;
   }
 
 #ifdef HAS_EGL
-- 
1.9.0

_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to