diff options
-rw-r--r-- | src/gallium/drivers/swr/swr_shader.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/swr/swr_shader.cpp b/src/gallium/drivers/swr/swr_shader.cpp index 477fa7f2db4..6ea021a987e 100644 --- a/src/gallium/drivers/swr/swr_shader.cpp +++ b/src/gallium/drivers/swr/swr_shader.cpp @@ -27,11 +27,13 @@ #include "JitManager.h" #include "llvm-c/Core.h" #include "llvm/Support/CBindingWrapping.h" +#include "llvm/IR/LegacyPassManager.h" #pragma pop_macro("DEBUG") #include "state.h" #include "gen_state_llvm.h" #include "builder.h" +#include "functionpasses/passes.h" #include "tgsi/tgsi_strings.h" #include "util/u_format.h" @@ -1389,6 +1391,11 @@ BuilderSWR::CompileFS(struct swr_context *ctx, swr_jit_fs_key &key) gallivm_compile_module(gallivm); + // after the gallivm passes, we have to lower the core's intrinsics + llvm::legacy::FunctionPassManager lowerPass(JM()->mpCurrentModule); + lowerPass.add(createLowerX86Pass(mpJitMgr, this)); + lowerPass.run(*pFunction); + PFN_PIXEL_KERNEL kernel = (PFN_PIXEL_KERNEL)gallivm_jit_function(gallivm, wrap(pFunction)); debug_printf("frag shader %p\n", kernel); |