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

Timothy Arceri tarceri at itsqueeze.com
Wed Feb 22 23:23:02 UTC 2017



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 <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

It builds correctly for me with that script.

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170223/8aae31b7/attachment.html>


More information about the mesa-dev mailing list