clover/spirv: pass list of supported extensions to the translator

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Pierre Moreau <dev@pmoreau.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5038>
diff --git a/src/gallium/frontends/clover/llvm/invocation.cpp b/src/gallium/frontends/clover/llvm/invocation.cpp
index 04db2f9..f7c0313 100644
--- a/src/gallium/frontends/clover/llvm/invocation.cpp
+++ b/src/gallium/frontends/clover/llvm/invocation.cpp
@@ -316,7 +316,14 @@
          std::min(static_cast<SPIRV::VersionNumber>(supported_versions.back()),
                   SPIRV::VersionNumber::MaximumVersion);
 
-      return SPIRV::TranslatorOpts(maximum_spirv_version);
+      SPIRV::TranslatorOpts::ExtensionsStatusMap spirv_extensions;
+      for (auto &ext : spirv::supported_extensions()) {
+         #define EXT(X) if (ext == #X) spirv_extensions.insert({ SPIRV::ExtensionID::X, true });
+         #include <LLVMSPIRVLib/LLVMSPIRVExtensions.inc>
+         #undef EXT
+      }
+
+      return SPIRV::TranslatorOpts(maximum_spirv_version, spirv_extensions);
    }
 #endif
 }