[Mesa-dev] [PATCH 8/8] r600/radeonsi: enable glsl/tgsi on-diskcache

Marc Dietrich marvin24 at gmx.de
Wed Feb 22 22:44:05 UTC 2017


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 <marvin24 at 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.olsak at amd.com>
> >>>> Reviewed-by: Edward O'Callaghan <funfunctor at 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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170222/b1c6e3ba/attachment.sig>


More information about the mesa-dev mailing list