Summary: | HAVE_LLVM undelcared in r600_pipe_common.c if enable_r600_llvm not set | ||
---|---|---|---|
Product: | Mesa | Reporter: | athomas |
Component: | Drivers/Gallium/r600 | Assignee: | Default DRI bug account <dri-devel> |
Status: | RESOLVED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | medium | CC: | athomas |
Version: | git | ||
Hardware: | All | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | Don't build LLVM related code when HAVE_LLVM isn't defined |
Description
athomas
2015-01-08 18:14:37 UTC
HAVE_LLVM is only established by configure.ac if LLVM_CONFIG = yes. LLVM_CONFIG will only be "yes" if enable_r600_llvm is specified. If HAVE_LLVM is not declared, then the build of mesa/mesa/src/gallium/drivers/radeon/r600_pipe_common.c DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DLLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" Fails with: make[3]: Entering directory '/home/jessie/xserver_tmp/src/mesa/mesa/src/gallium/drivers/radeon' CC r600_pipe_common.lo r600_pipe_common.c: In function 'r600_get_compute_param': r600_pipe_common.c:503:40: error: 'HAVE_LLVM' undeclared (first use in this function) if (rscreen->family <= CHIP_ARUBA || HAVE_LLVM < 0x0306) { ^ r600_pipe_common.c:503:40: note: each undeclared identifier is reported only once for each function it appears in Makefile:668: recipe for target 'r600_pipe_common.lo' failed make[3]: *** [r600_pipe_common.lo] Error 1 Created attachment 111998 [details] [review] Don't build LLVM related code when HAVE_LLVM isn't defined Does this patch work? The patch seems to be in the right direction of removing the dependance of LLVM in the source code, but I dont have hardware to test functionality. I can test that it compiles when LLVM isn't specified on Monday. I don't have enough knowledge on the internal workings of the driver to make comments on the implications of the code chages though. A couple of notes I meant to add last night: Build Environment: - Building directly on an ARM platform. imx6 - very similar to sabrelite. - I set the prefix to be someplace in my /home directory via the X.org build.sh script. - Flags: --enable-driglx-direct --enable-gles1 --enable-gles2 --enable-glx --with-dri-drivers=radeon Additional notes about the mesa build with llvm: Normally the auto setting for enable_gallium_llvm will set enable_gallium=llvm=yes and trigger llvm to be used with the driver. This is NOT the case if the host CPU is not i*86/x96_64/AMD64. See the current snippet below from configure.ac if test "x$enable_gallium_llvm" = xauto; then case "$host_cpu" in i*86|x86_64|amd64) enable_gallium_llvm=yes;; esac fi Tests I did: - I hacked the configure.ac to always set enable_gallium_llvm=yes and was able to get the gallium r600 driver to build and subsquently mesa. - I, somewhat stupidly, tested --with-dri-drivers=nouveau and not --with-gallium-drivers=nouveau because I dont care about the drivers - I will end up using Freescale/Vivante drivers. BUT - can the two be aligned or at least checked for inconsistencies. Questions: - Does it make sense to migrate the default to use LLVM for ARM platforms? At the end of the day I didnt really care about the drivers themselves because I will be dropping in Vivante drivers via Freescale, but I needed mesa/gallium to build. I should have cut the gallium drivers out, but I was concerned I had my build environment/paths setup correctly. Fixed with bed6f20f28af8bf531c14e3cab12a00354a31. Closing. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.