clover/nir: don't convert to NIR on library link
authorDave Airlie <airlied@redhat.com>
Mon, 9 Aug 2021 01:36:58 +0000 (11:36 +1000)
committerMarge Bot <eric+marge@anholt.net>
Tue, 10 Aug 2021 21:38:39 +0000 (21:38 +0000)
If just creating a library, just link the spir-v and store it.

Reviewed-by: Karol Herbst <kherbst@redhat.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12286>

src/gallium/frontends/clover/core/compiler.hpp

index 30dfe44..7e2380e 100644 (file)
@@ -62,10 +62,16 @@ namespace clover {
       static inline module
       link_program(const std::vector<module> &ms, const device &dev,
                    const std::string &opts, std::string &log) {
+         const bool create_library =
+            opts.find("-create-library") != std::string::npos;
          switch (dev.ir_format()) {
-         case PIPE_SHADER_IR_NIR_SERIALIZED:
-            return nir::spirv_to_nir(spirv::link_program(ms, dev, opts, log),
+         case PIPE_SHADER_IR_NIR_SERIALIZED: {
+            auto spirv_linked_module = spirv::link_program(ms, dev, opts, log);
+            if (create_library)
+               return spirv_linked_module;
+            return nir::spirv_to_nir(spirv_linked_module,
                                      dev, log);
+         }
          case PIPE_SHADER_IR_NATIVE:
             return llvm::link_program(ms, dev, opts, log);
          default: