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