[Mesa-users] Trouble compiling MesaGL : llvm intrinsics seem to be missing.

Albert Freeman albertwdfreeman at gmail.com
Thu Nov 3 03:37:12 UTC 2016


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 <albertwdfreeman at gmail.com> 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 <jjmcwill at altair.com> 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:mesa-users-bounces at lists.freedesktop.org] On Behalf Of Jeff McWilliams
>> Sent: Wednesday, November 2, 2016 8:00 AM
>> To: Albert Freeman <albertwdfreeman at gmail.com>
>> Cc: mesa-users at lists.freedesktop.org
>> 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:albertwdfreeman at gmail.com]
>> Sent: Tuesday, November 1, 2016 11:37 PM
>> To: Jeff McWilliams <jjmcwill at altair.com>
>> Cc: mesa-users at lists.freedesktop.org
>> 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 <jjmcwill at altair.com> 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
>>> mesa-users at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/mesa-users
>> _______________________________________________
>> mesa-users mailing list
>> mesa-users at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-users


More information about the mesa-users mailing list