Re: Trouble compiling MesaGL : llvm intrinsics seem to be missing.

Albert Freeman <[email protected]>
Newsgroups gmane.comp.video.mesa3d.user
Message-ID <CAHD8uZMFmF=jXz=tgXZ3fiBrnEauPx86BXv7rnpFu3DdNno-+Q@mail.gmail.com>
Also remove this from configure.ac:

dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after
this block
if test -n "$with_gallium_drivers"; then
    gallium_drivers=`IFS=', '; echo $with_gallium_drivers`
    for driver in $gallium_drivers; do
        case "x$driver" in
        xsvga)
            HAVE_GALLIUM_SVGA=yes
            require_libdrm "svga"
            ;;
        xi915)
            HAVE_GALLIUM_I915=yes
            PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
            require_libdrm "Gallium i915"
            ;;
        xilo)
            HAVE_GALLIUM_ILO=yes
            PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
            require_libdrm "Gallium i965/ilo"
            ;;
        xr300)
            HAVE_GALLIUM_R300=yes
            PKG_CHECK_MODULES([RADEON], [libdrm_radeon >=
$LIBDRM_RADEON_REQUIRED])
            require_libdrm "Gallium R300"
            gallium_require_llvm "Gallium R300"
            ;;
        xr600)
            HAVE_GALLIUM_R600=yes
            PKG_CHECK_MODULES([RADEON], [libdrm_radeon >=
$LIBDRM_RADEON_REQUIRED])
            require_libdrm "Gallium R600"
            if test "x$enable_opencl" = xyes; then
                radeon_gallium_llvm_check "r600g" "3" "6" "0"
                LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
            fi
            ;;
        xradeonsi)
            HAVE_GALLIUM_RADEONSI=yes
            PKG_CHECK_MODULES([RADEON], [libdrm_radeon >=
$LIBDRM_RADEON_REQUIRED])
            PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >=
$LIBDRM_AMDGPU_REQUIRED])
            require_libdrm "radeonsi"
            radeon_gallium_llvm_check "radeonsi" "3" "6" "0"
            require_basic_egl "radeonsi"
            ;;
        xnouveau)
            HAVE_GALLIUM_NOUVEAU=yes
            PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >=
$LIBDRM_NOUVEAU_REQUIRED])
            require_libdrm "nouveau"
            ;;
        xfreedreno)
            HAVE_GALLIUM_FREEDRENO=yes
            PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >=
$LIBDRM_FREEDRENO_REQUIRED])
            require_libdrm "freedreno"
            ;;
        xswrast)
            HAVE_GALLIUM_SOFTPIPE=yes
            if test "x$MESA_LLVM" = x1; then
                HAVE_GALLIUM_LLVMPIPE=yes
            fi
            ;;
        xswr)
            swr_llvm_check "swr"

            swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \
                ",-std=c++11" \
                SWR_CXX11_CXXFLAGS
            AC_SUBST([SWR_CXX11_CXXFLAGS])

            swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
                ",-mavx,-march=core-avx" \
                SWR_AVX_CXXFLAGS
            AC_SUBST([SWR_AVX_CXXFLAGS])

            swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
                ",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \
                SWR_AVX2_CXXFLAGS
            AC_SUBST([SWR_AVX2_CXXFLAGS])

            HAVE_GALLIUM_SWR=yes
            ;;
        xvc4)
            HAVE_GALLIUM_VC4=yes
            PKG_CHECK_MODULES([VC4], [libdrm_vc4 >= $LIBDRM_VC4_REQUIRED])
            require_libdrm "vc4"

            PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
                              [USE_VC4_SIMULATOR=yes;
                               DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
                              [USE_VC4_SIMULATOR=no])
            ;;
        xvirgl)
            HAVE_GALLIUM_VIRGL=yes
            require_libdrm "virgl"
            require_basic_egl "virgl"
            ;;
        *)
            AC_MSG_ERROR([Unknown Gallium driver: $driver])
            ;;
        esac
    done
fi

On 3 November 2016 at 13:34, Albert Freeman <[email protected]> wrote:
> I would remove this line from configure.ac and rerun ./autogen.sh:
> AC_MSG_ERROR([gallium_osmesa requires the gallium swrast driver])
> then try the top config again with these changes: Omit --enable-osmesa
> since  that is the classic osmesa which is a slower alternative to
> --enable-gallium-osmesa.
>
> swr is for distributed computers, it is faster than swrast, but for
> non distributed computing environments you will want to use llvmpipe
> which is faster than softpipe (which in turn is faster than swrast)
> but requires llvm and x86.
> I don't know what "configure: error: Unknown Gallium driver: llvmpipe"
> is on about.
> That last configuration of yours builds no drivers so will result in
> an unworkable mesa.
>
> On 2 November 2016 at 23:39, Jeff McWilliams <[email protected]> wrote:
>> Removing the swrast driver in order to avoid the compile error with missing llvm intrinsics causes a configuration error:
>>
>> ./configure --enable-opengl --disable-gles1 --disable-gles2 --disable-va --disable-xvmc --disable-vdpau --enable-shared-glapi --enable-texture-float --enable-gallium-llvm --enable-llvm-shared-libs --with-gallium-drivers=llvmpipe --disable-egl --with-egl-platforms= --disable-gbm --disable-dri --with-dri-drivers=  --disable-glx --enable-osmesa --enable-gallium-osmesa --with-llvm-prefix=$HW_ROOTDIR/third_party/llvm/llvm3.9.0/linux64 --prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64 --exec-prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64
>> ...
>> ...
>> ...
>> configure: error: gallium_osmesa requires the gallium swrast driver
>>
>> Removing "--enable-gallium-osmesa" in response to the above error causes another error.  Llvmpipe is an unknown gallium driver.
>>
>>
>> ./configure --enable-opengl --disable-gles1 --disable-gles2 --disable-va --disable-xvmc --disable-vdpau --enable-shared-glapi --enable-texture-float --enable-gallium-llvm --enable-llvm-shared-libs --with-gallium-drivers=llvmpipe --disable-egl --with-egl-platforms= --disable-gbm --disable-dri --with-dri-drivers=  --disable-glx --enable-osmesa --with-llvm-prefix=$HW_ROOTDIR/third_party/llvm/llvm3.9.0/linux64 --prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64 --exec-prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64
>> ...
>> ...
>> ...
>> configure: error: Unknown Gallium driver: llvmpipe
>>
>> The following configuration results in no configuration errors, but is this the optimal performance configuration for OSMesa ?
>>
>> ./configure --enable-opengl --disable-gles1 --disable-gles2 --disable-va --disable-xvmc --disable-vdpau --enable-shared-glapi --enable-texture-float --enable-gallium-llvm --enable-llvm-shared-libs --with-gallium-drivers= --disable-egl --with-egl-platforms= --disable-gbm --disable-dri --with-dri-drivers=  --disable-glx --enable-osmesa --with-llvm-prefix=$HW_ROOTDIR/third_party/llvm/llvm3.9.0/linux64 --prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64 --exec-prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64
>>
>>
>>
>>
>> Jeff
>>
>> -----Original Message-----
>> From: mesa-users [mailto:[email protected]] On Behalf Of Jeff McWilliams
>> Sent: Wednesday, November 2, 2016 8:00 AM
>> To: Albert Freeman <[email protected]>
>> Cc: [email protected]
>> Subject: Re: [Mesa-users] Trouble compiling MesaGL : llvm intrinsics seem to be missing.
>>
>> Thanks for the suggestions, Albert.  I will try these.
>>
>> I'm not 100% clear on the differences between swr and swrast.  I'm looking for the fastest OSMesa renderer.  I was under the impression that swr was faster than swrast, but I could be misinformed.
>>
>>
>> -----Original Message-----
>> From: Albert Freeman [mailto:[email protected]]
>> Sent: Tuesday, November 1, 2016 11:37 PM
>> To: Jeff McWilliams <[email protected]>
>> Cc: [email protected]
>> Subject: Re: [Mesa-users] Trouble compiling MesaGL : llvm intrinsics seem to be missing.
>>
>> Those compilation errors are with swr which you have enabled via --with-gallium-drivers=swrast,swr. Do you intend to use swr? If not remove it. I don't know if swr can even be used with osmesa.
>> --with-gallium-drivers=llvmpipe might be a good idea You probably want to change --disable-texture-float to --enable-texture-float or you won't get very high OpenGL support.
>> And you may or may not want to remove --with-sha1=libcrypto You may want to remove --disable-osmesa
>>
>> On 2 November 2016 at 03:56, Jeff McWilliams <[email protected]> wrote:
>>> I'm trying to compile MesaGL specifically to use the OSMesa support for a project.
>>>
>>> I've configured and compiled llvm 3.9.0 with the following configure:
>>>
>>> cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON
>>> -DCMAKE_INSTALL_PREFIX=$HW_ROOTDIR/third_party/llvm/llvm3.9.0/linux64
>>> -DLLVM_TARGETS_TO_BUILD="X86"
>>> $HW_ROOTDIR/third_party/llvm/llvm3.9.0/llvm-3.9.0.src
>>> make
>>> make install
>>>
>>> And I've configured mesa 12.0.3 with:
>>> ./configure ./configure --enable-opengl --disable-gles1
>>> --disable-gles2 --disable-va --disable-xvmc --disable-vdpau
>>> --enable-shared-glapi --disable-texture-float --with-sha1=libcrypto
>>> --enable-gallium-llvm --enable-llvm-shared-libs
>>> --with-gallium-drivers=swrast,swr --disable-egl --with-egl-platforms=
>>> --disable-gbm --disable-dri --with-dri-drivers=  --disable-glx
>>> --disable-osmesa --enable-gallium-osmesa
>>> --with-llvm-prefix=$HW_ROOTDIR/third_party/llvm/llvm3.9.0/linux64
>>> --prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64
>>> --exec-prefix=$HW_ROOTDIR/third_party/mesagl/mesa12.0.3/linux64
>>> make
>>> make install
>>>
>>> I'm getting the following error building Mesa (below).  What am I doing wrong and how do I fix it?
>>> Thanks
>>>
>>> Jeff
>>>
>>>
>>>   CXX      libswrAVX_la-swr_query.lo
>>> swr_screen.cpp: In function #boolean swr_texture_layout(swr_screen*, swr_resource*, boolean)#:
>>> swr_screen.cpp:550:24: warning: comparison is always false due to limited range of data type [-Wtype-limits]
>>>   CXX      rasterizer/jitter/libswrAVX_la-blend_jit.lo
>>>   CXX      rasterizer/jitter/libswrAVX_la-builder.lo
>>>   CXX      rasterizer/jitter/libswrAVX_la-builder_misc.lo
>>>   CXX      rasterizer/jitter/libswrAVX_la-fetch_jit.lo
>>>   CXX      rasterizer/jitter/libswrAVX_la-JitManager.lo
>>>   CXX      rasterizer/jitter/libswrAVX_la-streamout_jit.lo
>>> rasterizer/jitter/builder_misc.cpp: In member function #llvm::Value* Builder::PMAXSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_misc.cpp:862:77: error: #x86_sse41_pmaxsd#
>>> is not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_misc.cpp: In member function #llvm::Value* Builder::PMINSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_misc.cpp:891:77: error: #x86_sse41_pminsd# is not a member of #llvm::Intrinsic#
>>>   CXX      rasterizer/jitter/libswrAVX_la-builder_x86.lo
>>> mv: cannot stat `rasterizer/jitter/.deps/libswrAVX_la-builder_misc.Tpo': No such file or directory
>>>   CXX      rasterizer/jitter/libswrAVX_la-builder_gen.lo
>>>   CXX      libswrAVX2_la-swr_clear.lo
>>>   CXX      libswrAVX2_la-swr_context.lo
>>>   CXX      libswrAVX2_la-swr_draw.lo
>>>   CXX      libswrAVX2_la-swr_screen.lo
>>>   CXX      libswrAVX2_la-swr_state.lo
>>>   CXX      libswrAVX2_la-swr_tex_sample.lo
>>>   CXX      libswrAVX2_la-swr_scratch.lo
>>>   CXX      libswrAVX2_la-swr_shader.lo
>>>   CXX      libswrAVX2_la-swr_fence.lo
>>>   CXX      libswrAVX2_la-swr_query.lo
>>>   CXX      rasterizer/jitter/libswrAVX2_la-blend_jit.lo
>>> swr_screen.cpp: In function #boolean swr_texture_layout(swr_screen*, swr_resource*, boolean)#:
>>> swr_screen.cpp:550:24: warning: comparison is always false due to limited range of data type [-Wtype-limits]
>>>   CXX      rasterizer/jitter/libswrAVX2_la-builder.lo
>>>   CXX      rasterizer/jitter/libswrAVX2_la-builder_misc.lo
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMINSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:85:71: error: #x86_avx2_pmins_d# is
>>> not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMAXSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:92:71: error: #x86_avx2_pmaxs_d# is
>>> not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMOVSXBD(llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:148:71: error: #x86_avx2_pmovsxbd#
>>> is not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMOVSXWD(llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:155:71: error: #x86_avx2_pmovsxwd#
>>> is not a member of #llvm::Intrinsic#
>>> mv: cannot stat `rasterizer/jitter/.deps/libswrAVX_la-builder_x86.Tpo': No such file or directory
>>>   CXX      rasterizer/jitter/libswrAVX2_la-fetch_jit.lo
>>>   CXX      rasterizer/jitter/libswrAVX2_la-JitManager.lo
>>>   CXX      rasterizer/jitter/libswrAVX2_la-streamout_jit.lo
>>>   CXX      rasterizer/jitter/libswrAVX2_la-builder_x86.lo
>>>   CXX      rasterizer/jitter/libswrAVX2_la-builder_gen.lo
>>>   CXXLD    libswrAVX.la
>>> rasterizer/jitter/builder_misc.cpp: In member function #llvm::Value* Builder::PMAXSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_misc.cpp:862:77: error: #x86_sse41_pmaxsd#
>>> is not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_misc.cpp: In member function #llvm::Value* Builder::PMINSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_misc.cpp:891:77: error: #x86_sse41_pminsd#
>>> is not a member of #llvm::Intrinsic#
>>> mv: cannot stat `rasterizer/jitter/.deps/libswrAVX2_la-builder_misc.Tpo': No such file or directory
>>> libtool:   error: 'rasterizer/jitter/libswrAVX_la-builder_misc.lo' is not a valid libtool object
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMINSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:85:71: error: #x86_avx2_pmins_d# is
>>> not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMAXSD(llvm::Value*, llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:92:71: error: #x86_avx2_pmaxs_d# is
>>> not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMOVSXBD(llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:148:71: error: #x86_avx2_pmovsxbd#
>>> is not a member of #llvm::Intrinsic#
>>> rasterizer/jitter/builder_x86.cpp: In member function #llvm::Value* Builder::VPMOVSXWD(llvm::Value*)#:
>>> rasterizer/jitter/builder_x86.cpp:155:71: error: #x86_avx2_pmovsxwd#
>>> is not a member of #llvm::Intrinsic#
>>> mv: cannot stat `rasterizer/jitter/.deps/libswrAVX2_la-builder_x86.Tpo': No such file or directory
>>>   CXXLD    libswrAVX2.la
>>> libtool:   error: 'rasterizer/jitter/libswrAVX2_la-builder_misc.lo' is not a valid libtool object
>>>   GEN      .install-gallium-links
>>> ln: accessing `.libs/libswrAVX.so*': No such file or directory
>>> ln: accessing `.libs/libswrAVX2.so*': No such file or directory Making
>>> all in winsys/sw/null
>>>
>>> _______________________________________________
>>> mesa-users mailing list
>>> [email protected]
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-users
>> _______________________________________________
>> mesa-users mailing list
>> [email protected]
>> https://lists.freedesktop.org/mailman/listinfo/mesa-users
_______________________________________________
mesa-users mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.