clover: only return CLC version as 1.2 (even for 3.0)
authorDave Airlie <airlied@redhat.com>
Mon, 9 Aug 2021 03:24:34 +0000 (13:24 +1000)
committerMarge Bot <eric+marge@anholt.net>
Tue, 10 Aug 2021 21:38:39 +0000 (21:38 +0000)
Fixes CTS compiler opencl_c_versions

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12286>

src/gallium/frontends/clover/api/device.cpp
src/gallium/frontends/clover/core/device.cpp
src/gallium/frontends/clover/core/device.hpp

index a80367d..2d1066f 100644 (file)
@@ -429,7 +429,7 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
       break;
 
    case CL_DEVICE_OPENCL_C_NUMERIC_VERSION_KHR:
-      buf.as_scalar<cl_version>() = dev.device_clc_version();
+      buf.as_scalar<cl_version>() = dev.device_clc_version(true);
       break;
 
    case CL_DEVICE_OPENCL_C_ALL_VERSIONS:
index d9bd2d0..7ef66d5 100644 (file)
@@ -440,9 +440,17 @@ device::device_version_as_string() const {
 
 std::string
 device::device_clc_version_as_string() const {
+   int major = CL_VERSION_MAJOR(clc_version);
+   int minor = CL_VERSION_MINOR(clc_version);
+
+   /* for CL 3.0 we need this to be 1.2 until we support 2.0. */
+   if (major == 3) {
+      major = 1;
+      minor = 2;
+   }
    static const std::string version_string =
-      std::to_string(CL_VERSION_MAJOR(clc_version)) + "." +
-      std::to_string(CL_VERSION_MINOR(clc_version));
+      std::to_string(major) + "." +
+      std::to_string(minor);
    return version_string;
 }
 
@@ -510,7 +518,19 @@ device::device_version() const {
 }
 
 cl_version
-device::device_clc_version() const {
+device::device_clc_version(bool api) const {
+   /*
+    * For the API we have to limit this to 1.2,
+    * but internally we want 3.0 if it works.
+    */
+   if (!api)
+      return clc_version;
+
+   int major = CL_VERSION_MAJOR(clc_version);
+   /* for CL 3.0 we need this to be 1.2 until we support 2.0. */
+   if (major == 3) {
+      return CL_MAKE_VERSION(1, 2, 0);
+   }
    return clc_version;
 }
 
index 970538c..311d0c9 100644 (file)
@@ -95,7 +95,7 @@ namespace clover {
       bool supports_ir(enum pipe_shader_ir ir) const;
       std::string supported_extensions_as_string() const;
       cl_version device_version() const;
-      cl_version device_clc_version() const;
+      cl_version device_clc_version(bool api = false) const;
       std::vector<cl_name_version> opencl_c_all_versions() const;
       std::vector<cl_name_version> supported_extensions() const;
       std::vector<cl_name_version> supported_il_versions() const;