Mesa (main): compiler/clc: Null extensions should mean all supported, not all

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 4 18:43:26 UTC 2021


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

Author: Jesse Natalie <jenatali at microsoft.com>
Date:   Mon Oct  4 09:29:22 2021 -0700

compiler/clc: Null extensions should mean all supported, not all

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13177>

---

 src/compiler/clc/clc_helpers.cpp | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/compiler/clc/clc_helpers.cpp b/src/compiler/clc/clc_helpers.cpp
index 1cd35cadcb5..fc481467194 100644
--- a/src/compiler/clc/clc_helpers.cpp
+++ b/src/compiler/clc/clc_helpers.cpp
@@ -890,21 +890,29 @@ llvm_mod_to_spirv(std::unique_ptr<::llvm::Module> mod,
       return -1;
    }
 
-   SPIRV::TranslatorOpts spirv_opts;
-   if (!args || !args->allowed_spirv_extensions) {
-      spirv_opts = SPIRV::TranslatorOpts(version);
-      spirv_opts.enableAllExtensions();
-   } else {
-      SPIRV::TranslatorOpts::ExtensionsStatusMap ext_map;
-      for (int i = 0; args->allowed_spirv_extensions[i]; i++) {
+   const char *const *extensions = NULL;
+   if (args)
+      extensions = args->allowed_spirv_extensions;
+   if (!extensions) {
+      /* The SPIR-V parser doesn't handle all extensions */
+      static const char *default_extensions[] = {
+         "SPV_EXT_shader_atomic_float_add",
+         "SPV_EXT_shader_atomic_float_min_max",
+         "SPV_KHR_float_controls",
+         NULL,
+      };
+      extensions = default_extensions;
+   }
+
+   SPIRV::TranslatorOpts::ExtensionsStatusMap ext_map;
+   for (int i = 0; extensions[i]; i++) {
 #define EXT(X) \
-         if (strcmp(#X, args->allowed_spirv_extensions[i]) == 0) \
-            ext_map.insert(std::make_pair(SPIRV::ExtensionID::X, true));
+      if (strcmp(#X, extensions[i]) == 0) \
+         ext_map.insert(std::make_pair(SPIRV::ExtensionID::X, true));
 #include "LLVMSPIRVLib/LLVMSPIRVExtensions.inc"
 #undef EXT
-      }
-      spirv_opts = SPIRV::TranslatorOpts(version, ext_map);
    }
+   SPIRV::TranslatorOpts spirv_opts = SPIRV::TranslatorOpts(version, ext_map);
 
    std::ostringstream spv_stream;
    if (!::llvm::writeSpirv(mod.get(), spirv_opts, spv_stream, log)) {



More information about the mesa-commit mailing list