rusticl/device: allow overwriting the device_type via env
authorKarol Herbst <kherbst@redhat.com>
Tue, 3 May 2022 19:52:42 +0000 (21:52 +0200)
committerMarge Bot <emma+marge@anholt.net>
Mon, 12 Sep 2022 05:58:13 +0000 (05:58 +0000)
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15439>

src/gallium/frontends/rusticl/core/device.rs

index 1ab3bd2..f4d4628 100644 (file)
@@ -289,6 +289,21 @@ impl Device {
         !self.long_supported()
     }
 
+    fn parse_env_device_type() -> Option<cl_device_type> {
+        let mut val = env::var("RUSTICL_DEVICE_TYPE").ok()?;
+        val.make_ascii_lowercase();
+        Some(
+            match &*val {
+                "accelerator" => CL_DEVICE_TYPE_ACCELERATOR,
+                "cpu" => CL_DEVICE_TYPE_CPU,
+                "custom" => CL_DEVICE_TYPE_CUSTOM,
+                "gpu" => CL_DEVICE_TYPE_GPU,
+                _ => return None,
+            }
+            .into(),
+        )
+    }
+
     fn parse_env_version() -> Option<CLVersion> {
         let val = env::var("RUSTICL_CL_VERSION").ok()?;
         let (major, minor) = val.split_once('.')?;
@@ -458,6 +473,10 @@ impl Device {
     }
 
     pub fn device_type(&self, internal: bool) -> cl_device_type {
+        if let Some(env) = Self::parse_env_device_type() {
+            return env;
+        }
+
         if self.custom {
             return CL_DEVICE_TYPE_CUSTOM as cl_device_type;
         }