On 23/02/17 09:44, Marc Dietrich wrote:
Am Mittwoch, 22. Februar 2017, 22:27:42 CET schrieb Timothy Arceri:
On 23/02/17 01:57, Marc Dietrich wrote:
Am Mittwoch, 22. Februar 2017, 15:48:18 CET schrieb Emil Velikov:
On 22 February 2017 at 13:31, Marc Dietrich <marvi...@gmx.de> wrote:
Am Mittwoch, 22. Februar 2017, 04:45:46 CET schrieb Timothy Arceri:
For gpu generations that use LLVM we create a timestamp string
containing both the LLVM and Mesa build times, otherwise we just
use the Mesa build time.

Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Reviewed-by: Edward O'Callaghan <funfunc...@folklore1984.net>
---

 src/gallium/drivers/radeon/r600_pipe_common.c | 43

+++++++++++++++++++++++++++
src/gallium/drivers/radeon/r600_pipe_common.h

 3 ++
 2 files changed, 46 insertions(+)

diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c
b/src/gallium/drivers/radeon/r600_pipe_common.c index 1781584..bae6d6f
100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.c
+++ b/src/gallium/drivers/radeon/r600_pipe_common.c
@@ -43,6 +43,10 @@

 #define HAVE_LLVM 0
 #endif

+#if HAVE_LLVM
+#include <llvm-c/TargetMachine.h>
+#endif
+

 #ifndef MESA_LLVM_VERSION_PATCH
 #define MESA_LLVM_VERSION_PATCH 0
 #endif

@@ -779,6 +783,41 @@ static const char* r600_get_chip_name(struct
r600_common_screen *rscreen) }

 }

+static void r600_disk_cache_create(struct r600_common_screen *rscreen)
+{
+     uint32_t mesa_timestamp;
+     if (disk_cache_get_function_timestamp(r600_disk_cache_create,
+                                           &mesa_timestamp)) {
+             char *timestamp_str;
+             int res = -1;
+             if (rscreen->chip_class < SI) {
+                     res = asprintf(&timestamp_str,
"%u",mesa_timestamp);
+             }
+#if HAVE_LLVM
+             else {
+                     uint32_t llvm_timestamp;
+                     if
(disk_cache_get_function_timestamp(LLVMInitializeAMDGPUTargetInfo, +

                                                      &llvm_timestamp))

{ +                             res = asprintf(&timestamp_str, "%u_%u",
+                                            mesa_timestamp,
llvm_timestamp); +                     }
+             }
+#endif

maybe this fails to link later in omx with r600 only compile.

make[4]: Verzeichnis „/usr/src/dri-project/mesa/src/gallium/targets/omx“
wird betreten

  CXXLD    libomx_mesa.la

../../../../src/gallium/drivers/radeon/.libs/libradeon.a(r600_pipe_commo
n.
o): In function `r600_disk_cache_create':
r600_pipe_common.c:(.text+0x2000): undefined reference to
`LLVMInitializeAMDGPUTargetInfo'
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:791: libomx_mesa.la] Fehler 1
make[4]: Verzeichnis „/usr/src/dri-project/mesa/src/gallium/targets/omx“
wird verlassen

That should not happen since

 - Compile guard HAVE_LLVM is defined when --enable-llvm is set

(explicitly or not)

 - Makefile/link guard HAVE_GALLIUM_LLVM is set when the --enable-llvm is

Please make clean/git clean and report the output of make V=1 if the
final link still fails.

still same. I added -lLLVMAMDGPUInfo to LLVM_{LDFLAGS|LIBS}. Now it
compiles, but GL apps crash during context creation. I also tested the
initial version posted and this worked just fine. I have llvm enabled.

I just built it with omx and only r600 without any issues. Did you do
'git clean -xfd' of just make clean?

yes - I always do.

If it's still failing with a git clean then please post the params you
are using to build mesa.

#!/bin/sh -x

git clean -fdx --exclude b.sh --exclude "0*" --exclude b2.sh

COMMON_FLAGS="--prefix=/usr     \
        --enable-texture-float  \
        --enable-gles1          \
        --enable-gles2          \
        --enable-egl            \
        --enable-opengl         \
        --enable-shared-glapi   \
        --enable-gbm            \
        --enable-xa             \
        --enable-xvmc           \
        --enable-vdpau          \
        --enable-omx            \
        --enable-va             \
        --enable-nine           \
        --enable-gallium-osmesa \
        --enable-dri3           \
        --enable-gallium-llvm   \
        --disable-opencl-icd    \
        --disable-debug         \
        --enable-glx-tls        \
        --disable-opencl                \
        --with-gallium-drivers=r600,swrast \
        --with-egl-platforms=drm,wayland,x11 \
        --with-dri-drivers=no"

./autogen.sh \
        $COMMON_FLAGS \
        CFLAGS="$OPT_FLAGS $LTO_GCC" \
        CXXFLAGS="$OPT_FLAGS $LTO_GCC" \
        LDFLAGS="$OPT_FLAGS $LTO_GCC" \
        CC="gcc$GCC_VER" \
        CXX="g++$GCC_VER" \
        LD="ld.gold" \
        AR="gcc-ar$GCC_VER" \
        NM="gcc-nm$GCC_VER" \
        RANLIB="gcc-ranlib$GCC_VER" \
        && \
make -j2 && make install


I've pushed a fix for building with an old version of llvm. Hopefully this will resolve your problem.

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to