Module: Mesa
Branch: main
Commit: b90d1cfbfea9fe40e2ec6d44e788ab27ff213e2a
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b90d1cfbfea9fe40e2ec6d44e788ab27ff213e2a

Author: Karol Herbst <[email protected]>
Date:   Mon Apr 24 13:07:38 2023 +0200

rusticl/platform: add RUSTICL_FEATURES boilerplate

Signed-off-by: Karol Herbst <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22649>

---

 docs/envvars.rst                               |  5 +++++
 src/gallium/frontends/rusticl/core/platform.rs | 17 +++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/docs/envvars.rst b/docs/envvars.rst
index c607fc77a48..0c0c0e49f2d 100644
--- a/docs/envvars.rst
+++ b/docs/envvars.rst
@@ -910,6 +910,11 @@ Rusticl environment variables
    -  ``RUSTICL_ENABLE=iris:1,radeonsi:0,2`` (enables second iris and first
       and third radeonsi device)
 
+.. envvar:: RUSTICL_FEATURES
+
+   a comma-separated list of features to enable. Those are disabled by default
+   as they might not be stable enough or break OpenCL conformance.
+
 .. envvar:: RUSTICL_DEBUG
 
    a comma-separated list of debug channels to enable.
diff --git a/src/gallium/frontends/rusticl/core/platform.rs 
b/src/gallium/frontends/rusticl/core/platform.rs
index e5c9005f69d..c5873e81325 100644
--- a/src/gallium/frontends/rusticl/core/platform.rs
+++ b/src/gallium/frontends/rusticl/core/platform.rs
@@ -21,6 +21,8 @@ pub struct PlatformDebug {
     pub program: bool,
 }
 
+pub struct PlatformFeatures {}
+
 static PLATFORM_ENV_ONCE: Once = Once::new();
 static PLATFORM_ONCE: Once = Once::new();
 
@@ -33,6 +35,7 @@ static mut PLATFORM: Platform = Platform {
     devs: Vec::new(),
 };
 static mut PLATFORM_DBG: PlatformDebug = PlatformDebug { program: false };
+static mut PLATFORM_FEATURES: PlatformFeatures = PlatformFeatures {};
 
 fn load_env() {
     let debug = unsafe { &mut PLATFORM_DBG };
@@ -44,6 +47,15 @@ fn load_env() {
             }
         }
     }
+
+    let features = unsafe { &mut PLATFORM_FEATURES };
+    if let Ok(feature_flags) = env::var("RUSTICL_FEATURES") {
+        for flag in feature_flags.split(',') {
+            match flag {
+                _ => eprintln!("Unknown RUSTICL_FEATURES flag found: {}", 
flag),
+            }
+        }
+    }
 }
 
 impl Platform {
@@ -62,6 +74,11 @@ impl Platform {
         unsafe { &PLATFORM_DBG }
     }
 
+    pub fn features() -> &'static PlatformFeatures {
+        debug_assert!(PLATFORM_ENV_ONCE.is_completed());
+        unsafe { &PLATFORM_FEATURES }
+    }
+
     fn init(&mut self) {
         unsafe {
             glsl_type_singleton_init_or_ref();

Reply via email to