summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/clover/core/compiler.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/state_trackers/clover/core/compiler.hpp')
-rw-r--r--src/gallium/state_trackers/clover/core/compiler.hpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/clover/core/compiler.hpp b/src/gallium/state_trackers/clover/core/compiler.hpp
index 4ed20061627..6ef30df9b7f 100644
--- a/src/gallium/state_trackers/clover/core/compiler.hpp
+++ b/src/gallium/state_trackers/clover/core/compiler.hpp
@@ -26,6 +26,8 @@
#include "core/device.hpp"
#include "core/module.hpp"
#include "llvm/invocation.hpp"
+#include "nir/invocation.hpp"
+#include "spirv/invocation.hpp"
namespace clover {
namespace compiler {
@@ -34,6 +36,10 @@ namespace clover {
const device &dev, const std::string &opts,
std::string &log) {
switch (dev.ir_format()) {
+#ifdef HAVE_CLOVER_SPIRV
+ case PIPE_SHADER_IR_NIR_SERIALIZED:
+ return llvm::compile_to_spirv(source, headers, dev, opts, log);
+#endif
case PIPE_SHADER_IR_NATIVE:
return llvm::compile_program(source, headers, dev, opts, log);
default:
@@ -46,6 +52,9 @@ namespace clover {
link_program(const std::vector<module> &ms, const device &dev,
const std::string &opts, std::string &log) {
switch (dev.ir_format()) {
+ case PIPE_SHADER_IR_NIR_SERIALIZED:
+ return nir::spirv_to_nir(spirv::link_program(ms, dev, opts, log),
+ dev, log);
case PIPE_SHADER_IR_NATIVE:
return llvm::link_program(ms, dev, opts, log);
default: