https://bugs.freedesktop.org/show_bug.cgi?id=66847
Priority: medium Bug ID: 66847 Assignee: dri-devel@lists.freedesktop.org Summary: compilation broken with llvm 3.3 Severity: normal Classification: Unclassified OS: All Reporter: marvin24@gmx.de Hardware: Other Status: NEW Version: 9.1 Component: Drivers/Gallium/r600 Product: Mesa
r600 build is broken in 9.1 (stable branch) when using llvm 3.3 (also stable).
I got it compiling with
0ee3cc5 r600g: Add $(DEFINES) to AM_CXXFLAGS 3a11b9b radeon/llvm: remove uneeded inclusion 1d16c20 radeon/llvm: Fix build with LLVM 3.3
from upstream plus
--- a/src/gallium/drivers/r600/llvm_wrapper.cpp +++ b/src/gallium/drivers/r600/llvm_wrapper.cpp @@ -2,11 +2,13 @@ #include <llvm/ADT/StringRef.h> #if HAVE_LLVM < 0x0303 #include <llvm/LLVMContext.h> +#include <llvm/Support/IRReader.h> #else #include <llvm/IR/LLVMContext.h> +#include <llvm/IRReader/IRReader.h> +#include <llvm/IR/Module.h> #endif #include <llvm/PassManager.h> -#include <llvm/Support/IRReader.h> #include <llvm/Support/MemoryBuffer.h> #include <llvm/Support/SourceMgr.h> #include <llvm/Transforms/IPO.h>
but that doesn't seem to be sufficient because I get a lot of
EE r600_asm.c:2041 r600_bytecode_build - unsupported CF instruction (0xFFFFFFFF) EE r600_shader.c:160 r600_pipe_shader_create - building bytecode failed ! EE r600_state_common.c:756 r600_shader_select - Failed to build shader variant (type=0) -22 EE r600_asm.c:2041 r600_bytecode_build - unsupported CF instruction (0xFFFFFFFF) EE r600_shader.c:160 r600_pipe_shader_create - building bytecode failed ! EE r600_state_common.c:756 r600_shader_select - Failed to build shader variant (type=0) -22
messages (this was from glxgears).
I would be great if this could be fixed for Mesa-9.1.5 because many distros will use it.
https://bugs.freedesktop.org/show_bug.cgi?id=66847
--- Comment #1 from Andreas Boll andreas.boll.dev@gmail.com --- The llvm backends of r600g and the radeonsi on mesa 9.1 are only compatible with tstellar's llvm-3.2 branch.
The llvm backends of r600g and the radeonsi on mesa 9.2 should be compatible with the official llvm-3.3 and llvm-3.4. It's not compatible with tstellar's llvm-3.2 branch.
So I think we should abort in configure if someone wants to build mesa 9.1 with enabled llvm backend and llvm != 3.2.
https://bugs.freedesktop.org/show_bug.cgi?id=66847
--- Comment #2 from Michel Dänzer michel@daenzer.net --- (In reply to comment #1)
So I think we should abort in configure if someone wants to build mesa 9.1 with enabled llvm backend and llvm != 3.2.
Agreed.
https://bugs.freedesktop.org/show_bug.cgi?id=66847
--- Comment #3 from Andreas Boll andreas.boll.dev@gmail.com --- Created attachment 82362 --> https://bugs.freedesktop.org/attachment.cgi?id=82362&action=edit possible fix (untested)
https://bugs.freedesktop.org/show_bug.cgi?id=66847
--- Comment #4 from Marc Dietrich marvin24@gmx.de --- You should also remove "or newer". Also "master" isn't the right branch (which one is the right?). While you are at it, checking for r600 target isn't enough, because it also needs "host".
I have the feeling that we should disable r600-llvm support in 9.1 release alltogether. I think it was just for testing anyway and likely unstable/lots of bugs still. It also saves distros from compiling some experimental version of llvm.
https://bugs.freedesktop.org/show_bug.cgi?id=66847
--- Comment #5 from Andreas Boll andreas.boll.dev@gmail.com --- (In reply to comment #4)
You should also remove "or newer".
Yes, will do.
Also "master" isn't the right branch (which one is the right?).
master is the right branch. See http://cgit.freedesktop.org/~tstellar/llvm
While you are at it, checking for r600 target isn't enough, because it also needs "host".
AFAIK the host target is needed for llvmpipe and draw-llvm too. So a more generic check would be required. But that's stuff for mesa master and should be in a separate commit anyway.
I have the feeling that we should disable r600-llvm support in 9.1 release alltogether. I think it was just for testing anyway and likely unstable/lots of bugs still. It also saves distros from compiling some experimental version of llvm.
For initial radeonsi support it's required. The r600g llvm backend isn't enabled by default and the help string says: Enable experimental LLVM backend for graphics shaders. See http://cgit.freedesktop.org/mesa/mesa/tree/configure.ac?h=9.1#n641 I think that should be enough.
https://bugs.freedesktop.org/show_bug.cgi?id=66847
Andreas Boll andreas.boll.dev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #82362|0 |1 is obsolete| |
--- Comment #6 from Andreas Boll andreas.boll.dev@gmail.com --- Created attachment 82365 --> https://bugs.freedesktop.org/attachment.cgi?id=82365&action=edit possible fix v2 (untested)
https://bugs.freedesktop.org/show_bug.cgi?id=66847
--- Comment #7 from Marc Dietrich marvin24@gmx.de --- arr, yes, master is right (I had an unclean tree), and also yes, r600 llvm in mesa is marked experimental and needs to be enabled explicitly, so all is fine - sorry.
Patch looks also fine (tested).
https://bugs.freedesktop.org/show_bug.cgi?id=66847
Andreas Boll andreas.boll.dev@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED
--- Comment #8 from Andreas Boll andreas.boll.dev@gmail.com --- Fixed with commit 9a287a076803a4b4cb475ec5c067c9a064f11a0d
dri-devel@lists.freedesktop.org