Am Donnerstag, 23. Februar 2017, 04:10:23 CET schrieb Timothy Arceri:
> 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_com
> >>>>> mo
> >>>>> 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.

I have a pretty current version of llvm (3.9.1), so the problem is not fixed 
by this patch :-) From the fact that it works for you and others, I guess it 
must be some distro packaging problem (suse thumbleweed here). llvm is using 
shared libs.

I tried to understand how the required llvm libs get assembled, but that's 
hard to find out. I ended up adding 'llvm_add_component "amdgpuinfo" 
$driver_name' to configure.ac to the defaults components. Now it compiles and 
also works fine - it seems you also fixed some other problem which made mesa 
crash here before. 

So the remaining question is what actually pulls in LLVMAMDGPUInfo, and why 
isn't it pulled here?

Marc

Attachment: signature.asc
Description: This is a digitally signed message part.

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

Reply via email to